R迭代列数据帧

use*_*073 6 r dataframe

我想以迭代方式将统计信息应用于数据框的列:

第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
}
Run Code Online (Sandbox Code Playgroud)

然而,as.name()是尝试从生成的列名中删除引号names(dataframe).

不幸的是它给了我错误:

i [A =="locationX"]中的错误:"符号"类型的对象不是可子集化的

我认为as.name()这不是正确的方法.

有线索吗?

42-*_*42- 9

这是有意义的,如果为"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
}
Run Code Online (Sandbox Code Playgroud)

请注意,即使您的代码没有出现错误,您仍然会在每次循环时覆盖"p".