【问题标题】:R iterate over columns dataframe遍历列数据框
【发布时间】:2012-01-18 00:04:15
【问题描述】:

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

第 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) 生成的列名中删除引号。

不幸的是,它给了我错误:

i[A == "locationX"] 中的错误: 'symbol' 类型的对象不可子集

我认为as.name() 不是正确的做法。

有什么线索吗?

【问题讨论】:

  • 你能举个例子A,也许还有head(dataframe)(这只是让我们看看你的数据框)?

标签: r dataframe


【解决方案1】:

如果“A”是一个具有多个“locationX”实例的向量多个相反的实例长度为“A”与“dataframe”中的行数相同。如果是这样的话,那么这样的事情可能会起作用:

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”。

【讨论】:

    猜你喜欢
    • 2016-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-12
    • 2021-02-17
    • 2021-06-28
    相关资源
    最近更新 更多