2017-06-13 131 views
1

我经常需要将大量变量从数据框转换为公式表达式。这些变量有时会在其中包含破折号/连字符,并且这会给问题带来麻烦。在as.formula中避免使用连字符作为负号

我知道我可以只gsub这些出来的数据帧的名字,​​但是这是不可取的,因为我需要回映射到使用连字符等注释文件。

我有一个解决方法,它利用反引号(`)和paste0下面,但感觉笨重的(即是难以阅读和可能比基础的东西,我已经错过了低效率)。

是否有更简单的表达式可以完成此操作?

dat <- data.frame(rnorm(100), rnorm(100)) 
names(dat) <- c("y", "x-1") 

form <- as.formula(paste("y~", names(dat)[2])) 
form #treats hyphen as minus 
lm(form, data = dat) #error 

# is this the only workaround? 
form <- as.formula(paste("y~", paste0("`", names(dat)[2], "`"))) 
form 
lm(form, data = dat) 

回答

2

我会使用.

f <- y ~ . 
lm(f, dat) 

子集data.frame只包含感兴趣的变量。

+0

这真的很聪明,我现在可以避免在模型调用之外定义公式,以及 'lm(y〜。,data = dat [,c(“y”,names(dat)[2])] )' –

相关问题