【问题标题】:Paste columname in R在 R 中粘贴列名
【发布时间】:2017-04-29 16:12:01
【问题描述】:

有一个带有预测变量(这些是因子)的数据框,它们都有一个特定的列名:

colnames(te)
[1] "XEF1" "TYI4" "KOP4" 
[3] "GGF19" "TRR129"

如果我循环尝试:

for (i in 1:2){
glm(GGF19~factor(paste(colnames[te][i])),data=te)
}

错误:

model.frame.default(tf, dati) 中的错误:可变长度不同(为 'factor(colnames(te)[i])' 找到)

如果我用硬编码的名字写它:

for (i in 1:2){
    glm(GGF19~factor(TYI4),data=te)
    }

它有效。我怎样才能让它在循环中工作?我已经尝试过 as.name 但这导致了同样的错误。

【问题讨论】:

  • 你可以试试glm(as.formula(paste("GGF19 ~ factor(",colnames(te)[i],")"), data=te)
  • 我也可以递归地执行此操作吗?以便将示例中的 XEF1 添加到正确的 sitee 或 d te 方程中?还有TYI14?

标签: r loops


【解决方案1】:

我尝试在我自己的一个数据集上循环名称,以下代码可以正常工作:

for(i in 1:ncol(data)) {

      print(colnames(data)[i])

}

为什么要使用 paste ? paste 和 colnames 的返回类型都是字符。

【讨论】:

  • 这对我不起作用,仍然得到相同的错误 model.frame.default(tf, dati) 中的错误:可变长度不同(为 'factor(print(colnames(te)[i ]))')
  • 好的,第一个问题,你想在这里只访问两列 for (i in 1:2){ glm(GGF19~factor(paste(colnames[te][i])),data =te) } 另外,在你硬编码的地方 (i in 1:2){ glm(GGF19~factor(TYI4),data=te) } 看起来你想要拟合线性模型,但调用该语句两个次。你到底想在这里做什么?
猜你喜欢
  • 2019-04-10
  • 2012-04-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多