在R中的公式中使用带有特殊字符的列

问题描述 投票:6回答:3

我正在尝试使用具有约200列的数据帧的rpart来创建决策树。其中某些列的名称中带有数字,有些则带有特殊字符(例如“ /”)。当我尝试生成树时,出现如下错误:

R> gg.rpart <- rpart(nospecialchar ~ Special/char, data=temp, method="class")
Error in eval(expr, envir, enclos) : object 'Special' not found
R> gg.rpart <- rpart(nospecialchar ~ "Special/char", data=temp, method="class")
Error in terms.formula(formula, data = data) : invalid model formula in ExtractVars
R> gg.rpart <- rpart(nospecialchar ~ `Special/char`, data=temp, method="class")
Error in `[.data.frame`(frame, predictors) : undefined columns selected

我必须更改名称以容纳R还是有某种方法可以将带有特殊字符的列名称传递给R公式?

r special-characters
3个回答
6
投票

此作品:

dat <- data.frame(M=rnorm(10),'A/B'=1:10,check.names=F)

> lm(M~`A/B`,dat)

Call:
lm(formula = M ~ `A/B`, data = dat)

Coefficients:
(Intercept)        `A/B`  
    -1.0494       0.1214  

2
投票

Joran对我的问题的评论是答案-我不知道是否存在make.names()

Joran,如果您回答作为答复,我会标记为正确。干杯!


0
投票

我只是遇到了同样的问题,将名称传递给R公式时,我不希望名称发生任何变化。 R允许非语法列名带有反引号。因此,我尝试在名称中添加反引号,效果也很好。我的代码如下:

lapply(colnames(variable), function(gene){
formula0 <- paste0("gleason_grade", "~" "`", gene, "`")
logit <- clm(as.formula(formula0), data = mydata)
})

现在您可以将新变量无误地传递给公式。如果您不希望像我一样对该变量进行任何更改,请反选它。

© www.soinside.com 2019 - 2024. All rights reserved.