2012-01-18 10 views
6

をDATAFRAME:Rの反復は、私が反復形でデータフレームの列に統計を適用する

列番号1:「A」を、私は区別したいタグを表します

for (i in names(dataframe)) { 
    i <- as.name(i) 
    group1 <- i[A=="locationX"] 
    group2 <- i[A!="locationX"] 
    p <- wilcox.test(group1,group2,na.action(na.omit))$p.value 
} 

ただし、as.name()は、names(dataframe)によって生成された列名から逆コンマを削除しようとしています。

残念ながら、それは私にエラーを与える:

Error in i[A == "locationX"] : object of type 'symbol' is not subsettable

私はas.name()はそれを行うための正しい方法ではないと思います。

手がかりはありますか?

+1

「A」の例と、おそらく 'head(dataframe)'(ちょうど私たちのデータフレームを見てください)を挙げてください。 –

答えて

8

「A」と同じであることが「locationX」と逆と「A」の長さ複数のインスタンスの複数のインスタンスを有するベクターであることがあれば、これは理にかなっている唯一の方法「データフレーム」の行数。その場合は、このような何かがうまくいくかもしれない:あなたはまだ「P」ループを通るたびに上書きされていたであろう、あなたのコードでエラーを取得していない場合でも

p <- list() 
for (i in names(dataframe)) { 
    # using as.names not needed and possibly harmful 
    group1 <- dataframe[[i]][A == "locationX"] 
    group2 <- dataframe[[i]][A != "locationX"] 
    p[i] <- wilcox.test(group1,group2,na.action(na.omit))$p.value 
} 

注意を。