2012-01-18 45 views
6

我想申请在迭代的方式统计的数据框的列:[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)'(它只是让我们看看你的数据框)吗? – 2012-01-18 00:07:58

回答

8

这是有意义的,如果为“A”可与“locationX” 和逆为“A”的长度的多个实例的多个实例的载体是相同的,唯一的方法“数据框”中的行数。如果是这样的话,那么这样的事情可能工作:

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 
} 

请注意,即使你没有得到你的代码,你仍然会被覆盖“P”通过循环每一次错误。