按数字在dataframe中寻址列
有一个包含3列的数据帧(y和2个预测器)。可以对列进行寻址,例如使用按数字在dataframe中寻址列,r,R,有一个包含3列的数据帧(y和2个预测器)。可以对列进行寻址,例如使用高度$df1或df1[,2]。同样的结果。两者都是向量(is.vector)。在某些情况下,与confint等公式组合时,输出是不同的 此代码提供正确的结果: confint(lm(df1[,1] ~ height, data=df1), "height") 这一个不起作用,它以NA值结束: confint(lm(earning ~ df1[, 2], data=df1), "height") 希望使用列号来处理数据帧,如d
高度$df1
或df1[,2]
。同样的结果。两者都是向量(is.vector
)。在某些情况下,与confint
等公式组合时,输出是不同的
此代码提供正确的结果:
confint(lm(df1[,1] ~ height, data=df1), "height")
这一个不起作用,它以NA
值结束:
confint(lm(earning ~ df1[, 2], data=df1), "height")
希望使用列号来处理数据帧,如df1[,2]
。正确的方法是什么?
感谢您的帮助。一个选项是使用
粘贴创建公式,它应该可以工作
confint(lm(paste0('earning ~ ', names(df1)[2]), data = df1), "height")
使用一个小的可重复的例子
data(mtcars)
fit <- lm(mpg ~ mtcars[,6], data = mtcars)
confint(fit, 'wt')
# 2.5 % 97.5 %
#wt NA NA
fit <- lm(paste0('mpg ~', names(mtcars)[6]), data = mtcars)
confint(fit, 'wt')
# 2.5 % 97.5 %
#wt -6.486308 -4.202635
数据(mtcars)
拟合我们可以使用重新制定
来创建公式:
confint(lm(reformulate(names(df1)[2], "earning"), df1), 'height')
以mtcars
为例:
confint(lm(reformulate(names(mtcars)[6], "mpg"), mtcars), 'wt')
# 2.5 % 97.5 %
#wt -6.486308 -4.202635
它起作用了。以及如何与mpg,resp一起实现。也赚钱?用数字来处理所有向量。。。在我的例子中,“收入”也是如此。类似于:confint(lm(names(df1)[1]~names(df1)[2],data=df1),“height”)
谢谢。@Eli3只需做confint(lm(paste0(names(df1)[1],“~”,names(df1)[2]),data=df1),“height”)
\akrun:谢谢你,它能工作。你能解释一下为什么它是这样工作的,而不是我的尝试df1[,2]?@Eli3在你的尝试中,用术语创建的属性是df1[,2]
,而不是列名,因此它与列名不匹配,以及如何使用更多变量,如:mpg~wt+hp?@Eli3confint(lm(重新格式化(名称(mtcars)[c(4,6)],“mpg”),“mtcars”),“wt”)
如下所示。