【问题标题】:Linear Regression with variables as columns in R将变量作为 R 中的列的线性回归
【发布时间】:2015-10-05 19:27:07
【问题描述】:

我的目标是从 Python 获取变量(在这种情况下为列名),然后在 R 中处理它们。当我尝试执行线性回归时,例如:

cropeareatable<-matrix(c(111111,222222,333333,2222222),ncol=2,byrow=TRUE)
colnames(cropeareatable)<-c('Canola_RE','Canola_CI')
cropeareatable

x<-(colnames(cropeareatable))
re <-x[0]
ci<-x[1]
linreg<-lm(table$re~table$ci)

编辑:更改为可重现

收到错误:table$re 中的错误:“闭包”类型的对象不是子集

它不起作用。我已经研究过了,并尝试了许多不同的方法

调用

regress<-do.call(rlm,list(cropareatable[3],cropareatable[4]),quote=FALSE)
regress<-do.call(rlm,list(x[3],y[4]),quote=FALSE)

quote()+eval:

x<-(colnames(cropareatable))
    re <-quote(x[3])
    ci<-quote(x[4])
    linreg<-lm(table$eval(re)~table$eval(ci))

我也尝试过公式构建、数据框构建、as.list,但我根本无法让回归工作。

【问题讨论】:

  • 请尝试使其可重现。另外,您收到什么错误?特别是在您的第一个代码块中。
  • 我已经简化了,无法重现。错误也显示出来了。
  • table$re : object of type 'closure' is not subsettable 可能只是因为table 是一个内置函数。考虑使用不同的变量名。
  • 啊——我想我明白了;您想按名称指定列。 $ 运算符几乎仅用于交互使用。考虑使用cropeareatable[, ci] 代替子集。
  • 哇!非常感谢。我环顾四周,研究了许多复杂的事情,但结果发现最好的就是最简单的。

标签: r variables regression


【解决方案1】:

有几个问题。首先是reci 被选择为基本索引0,但R 是从1 索引的。

re <- x[1]
ci <- x[2]

然后为了索引,我们可以使用[操作符而不是尝试使用$

lm(cropeareatable[, re] ~ cropeareatable[, ci])

【讨论】:

    猜你喜欢
    • 2014-10-31
    • 1970-01-01
    • 2021-08-21
    • 2014-05-08
    • 2020-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-20
    相关资源
    最近更新 更多