2012-01-18 20 views
6

Ben bir tekrarlı şekilde bir dataframe kolonlara istatistiklerini uygulamak istediğiniz dataframe:R yinelerler

sütunlar sayı 1: 'A' ı ayırt istediğiniz etiketleri temsil eder:

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 
} 

, ancak as.name(), ters virgüllerin names(dataframe) tarafından oluşturulan sütun adlarından kaldırılmasını denemektir. Ben as.name() bunu yapmak için doğru yolu olmadığını düşünüyorum

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

:

Ne yazık ki bana hata veriyor.

Herhangi bir ipuçları?

+1

Örnek A'ya, ve belki de belki de (veri şemasına) bir örnek verebilir misiniz? –

cevap

8

"A" için olduğu gibi aynı olduğu "locationX" ve tersi ve "A" uzunluğu için arasında çok örneğinin birden çok örneği ile bir vektör olduğu takdirde, bu tek mantıklı bir şekilde "dataframe" içindeki satır sayısı. Bu durumda sonra böyle bir şey işe yarayabilecek: Eğer hala "p" döngü yoluyla her zaman üzerine yazarak olurdu sizin koduyla bir hata alamadım bile

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 
} 

Not.