2017-06-13 133 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])] )' –

相關問題