组合由 grep 在 R 中检索到的变量名称(在公式中)
Combine names of variables (in a formula) retrieved by grep in R
我想在公式中直接使用 grep 的输出。
换句话说,我使用 grep
检索我想要 select 的变量并将它们存储在一个向量中。
很酷的事情是能够在公式中使用这个向量。
至于说
var.to.retrieve <- grep(pattern="V", x=data)
lm(var.dep~var.to.retrieve)
但这行不通...
我试过 paste(var.to.retrieve, collapse="+")
的解决方案,但这也不起作用。
编辑
解决方案可能是
formula <- as.formula(paste(var.dep, paste(var.to.retrieve, collapse="+"), sep="~"))
但我无法想象没有比这更优雅的方法了
reformulate(var.to.retrieve, response = var.dep)
基本上就是这样。
var.dep <- "y"
var.to.retrieve <- LETTERS[1:10]
r1 <- reformulate(var.to.retrieve, response = var.dep)
r2 <- as.formula(
paste(var.dep,
paste(var.to.retrieve, collapse = "+"),
sep = "~")
)
identical(r1,r2) ## TRUE
var_to_retrieve <- colnames(data)[grep(pattern = "V", x = colnames(data))]
lm(formula(paste(var.dep, paste(var_to_retrieve, collapse = "+"), sep = "~")),
data = data)
我想在公式中直接使用 grep 的输出。
换句话说,我使用 grep
检索我想要 select 的变量并将它们存储在一个向量中。
很酷的事情是能够在公式中使用这个向量。
至于说
var.to.retrieve <- grep(pattern="V", x=data)
lm(var.dep~var.to.retrieve)
但这行不通...
我试过 paste(var.to.retrieve, collapse="+")
的解决方案,但这也不起作用。
编辑 解决方案可能是
formula <- as.formula(paste(var.dep, paste(var.to.retrieve, collapse="+"), sep="~"))
但我无法想象没有比这更优雅的方法了
reformulate(var.to.retrieve, response = var.dep)
基本上就是这样。
var.dep <- "y"
var.to.retrieve <- LETTERS[1:10]
r1 <- reformulate(var.to.retrieve, response = var.dep)
r2 <- as.formula(
paste(var.dep,
paste(var.to.retrieve, collapse = "+"),
sep = "~")
)
identical(r1,r2) ## TRUE
var_to_retrieve <- colnames(data)[grep(pattern = "V", x = colnames(data))]
lm(formula(paste(var.dep, paste(var_to_retrieve, collapse = "+"), sep = "~")),
data = data)