data.frame~colnames行上的lm()

data.frame~colnames行上的lm(),r,dataframe,regression,linear-regression,lm,R,Dataframe,Regression,Linear Regression,Lm,我尝试对数据帧执行简单的lm()回归分析。明确地说,我希望在数据框的列名和每一行之间执行回归分析。我的数据框如下所示: d = data.frame(replicate(6,rnorm(6))) colnames(d) = as.character(0:5) 但是,我的lm()不起作用: lm(d[1,]~colnames(d)) #Error in model.frame.default(formula = d[1, ] ~ colnames(d), drop.unused.levels =

我尝试对数据帧执行简单的
lm()
回归分析。明确地说,我希望在数据框的列名和每一行之间执行回归分析。我的数据框如下所示:

d = data.frame(replicate(6,rnorm(6)))
colnames(d) = as.character(0:5)
但是,我的
lm()
不起作用:

lm(d[1,]~colnames(d))
#Error in model.frame.default(formula = d[1, ] ~ colnames(d), drop.unused.levels = TRUE) : 
#invalid type (list) for variable 'd[1, ]'
如果有人能帮我运行,我将非常感激。我还没有太多地使用
lm()
函数

我知道
lm()

cbind(d[1,],0:5)

但是,这不会降低
d
的维度。不知道为什么。如果有人也能回答这个问题,即使对R的理解更为笼统会对我有很大帮助。

我必须对你的计划做一些假设,因为你没有积极地澄清它

我假设您希望数据框的每一行都有一条不同的、独立的回归线。换句话说,您有多个响应(每行一个),但有一个共同的协变量:

x <- 1:ncol(d) - 1

x
lm(data.frame(y=unlist(d[1],x=0:5))
我认为一个简单的方法是
stack()
。但为什么值在同一行?同一行中的所有值是在同一单位上测量的吗?是的,同一行中的值是在同一材料上测量的。列名称指的是测量的数量。我知道表格的结构不理想,我的R问题解决了。Thx@zheiuanli。不过,让我更具体地谈谈分析,我从事遗传学工作,分析每个物种的绘图质量。详细地说,当映射到给定的物种(行)时,我度量每次读取(由列名给出)的不匹配量。我只想使用lm()测试负关系(映射读取的数量随着不匹配的增加而减少)。因此,对每个物种的观察不是独立的。
fit <- lm(t(d) ~ x)

#Call:
#lm(formula = t(d) ~ x)

#Coefficients:
#             [,1]      [,2]      [,3]      [,4]      [,5]      [,6]    
#(Intercept)   0.23133   0.48307   0.07867   0.62308   0.71174   0.89866
#x             0.02964  -0.30077  -0.05160   0.06321  -0.17155  -0.43689