我在R中使用lrm函数进行逻辑回归,需要一个由" +"分隔的变量名列表:
lrm(rating~X1+X2+X3+X4+X5+X6+X7+X8+X9+X10,data=d5)
有超过10个,我不想全部写出来。有没有办法让paste()
使函数有效?
以下是我用+:
分隔Xis字符串的方法x = "X1"
for(i in 2:10){
xi = paste("X",i,sep="")
x = paste(x,xi,sep="+")
}
到目前为止我所尝试过的一切都没有:
lrm(rating~x,data=d5)
lrm(rating~paste(x),data=d5)
lrm(rating~get(paste(x)),data=d5)
答案 0 :(得分:4)
确实你可以:
paste0( "X" , 1:10 , collapse = "+" )
#[1] "X1+X2+X3+X4+X5+X6+X7+X8+X9+X10"
或者更具体地说,你可能希望传递一个formula
对象,你可以使用as.formula
这样做:
fmla <- as.formula( paste0( "rating ~ " , paste0( "X" , 1:10 , collapse = "+" ) ) )
# rating ~ X1 + X2 + X3 + X4 + X5 + X6 + X7 + X8 + X9 + X10
# Then use it like any other variable
lrm( fmla , data=d5 )
答案 1 :(得分:3)
一种方法是在数据参数中使用paste
,然后使用Y ~ .
lrm( rating~., data=d5[ , c("rating", paste("X", 1:20, collapse="+"))] )
您需要使用collapse
而不是sep
来获取返回值中的一个而不是二十个元素。