2017-02-08 18 views
3

[R 3.2.2を使用する]データフレーム内の変数の値を変更する

ループを使用してデータフレームに含まれるいくつかの変数の値を変更しようとしています。具体的には、私は10

まずによって11個の変数のすべての値を分割したい、私は1つの変数(bio1)のためにそれを行うことを試みた:

dataframe0$bio1/10 

このコマンドは、私が取得したい結果を示していますコンソールに表示されますが、データフレーム内では変更されません。ループを構築しようとすると

、私はいくつかのオプションを思い付いた:

まず、私はすべての変数にベクトルを作成し、その後、私は、ループ構築:前のコードので

vlist <- c("bio1", "bio2", "bio3", "bio4", "bio5", "bio6", "bio7", "bio8", "bio9", "bio10", "bio11") 
for (i in vlist) { 
    dataframe0$i/10 
} 

をおそらく "「..」"代入するだけでなく、ループ内の文字列('i')と、結果として、それは動作しません、私は、この他のループで試される:

for(var in paste0("bio", 1:11)) { 
    dataframe0$var/10 
} 

何それを実行し、変更をデータフレームに保存するためにはどうすればよいですか?前もって感謝します!

+0

あなたが正確などのプログラミング言語および使用しているフレームワーク/ライブラリができれば役立つだろう。タグセクションに追加して、興味のある人があなたの答えを簡単に見つけ出して答えることができます。 – JeromeFr

+1

@JeromeFrありがとう!私はこれらのコードに関連するライブラリを持っていません... – Marina

+0

apply(dataframe0,2、function(x)x/10)またはapply(dataframe0 [、grepl( "bio"、names(datafram0)))]、 2、関数(x)x/10) – Niek

答えて

1

最も簡単な解決策は、おそらくループは、このために必要ではないでしょう

dataframe0[,vlist] <- dataframe0[,vlist]/10 

になります。 (便宜的に私自身のデータの一部を使用して)

例:

> head(websurvey[,c("age", "dur")]) 
     age dur 
17514 68 320 
15091 70 503 
18152 30 276 
7558 39 311 
22594 47 161 
5108 56 284 

> websurvey_test[,c("age", "dur")] <- websurvey[,c("age", "dur")]/10 

> head(websurvey_test[,c("age", "dur")]) 
     age dur 
17514 6.8 32.0 
15091 7.0 50.3 
18152 3.0 27.6 
7558 3.9 31.1 
22594 4.7 16.1 
5108 5.6 28.4 
関連する問題