2

我正在使用 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)
4

2 回答 2

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 ) 
于 2013-09-05T17:29:14.123 回答
3

一种方法是paste在 data 参数中使用,然后使用Y ~ .

lrm( rating~., data=d5[ , c("rating", paste("X", 1:20, collapse="+"))] )

您需要使用collapse而不是sep在返回值中获取一个而不是二十个元素。

于 2013-09-05T17:40:43.520 回答