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
xlm(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