我有一个由modelTrain
函数生成的名为glm()
的对象。该对象还有其他几个对象,例如:coefficients
,formula
,terms
等。
modelTrain<- glm(Def90Adj ~ .-1,data=base,family=binomial(link='logit'))
我必须更改一些变量的名称,以保留用于预测的值。 modelTrain
中的对象之一是“呼叫”(或“语言”)类型
其内容如下:
attr(,"variables")
list(Def90Adj, `AveLncerLimiteRatio(0,1.04]`, `AveLncerLimiteRatio(1.04,3.96]`,
`AveLncerLimiteRatio(11.4,40.3]`, `AveLncerLimiteRatio(3.96,11.4]`,
`AveLncerLimiteRatio(40.3, Inf]`, `Ave6mEvoluçãoAvencerRatio(0, Inf]`,
`Ven6mEvoluçãoVencidoRatio(0.0001, Inf]`, `Ven6mEvoluçãoVencidoRatio[-Inf,-0.0001]`,
`Avvencer(0,1.01e+04]`, `AVBenNegAVenRatio(0, Inf]`,
`AVeNnNociAVenRatio(0, Inf]`, LimDummy, VencidoDummy,
PrejuDummy, AVedncerDummy)
我想将"Ven6mEvoluçãoVencidoRatio(0.0001, Inf]"
等特殊字符的名称更改为"Ven6mEvolucaoVencidoRatio(0.0001, Inf]"
(不使用特殊字符)
我尝试了复制不带特殊字符的当前内容
attr(modelTrain$terms, "variables") <- list((Def90Adj,AveLncerLimiteRatio(0,1.04]....
但是会引发错误:
未找到“ Def90Adj”。
答案 0 :(得分:1)
蛮力方法使用quote()
:
L1 <- quote(list(Def90Adj, `AveLncerLimiteRatio(0,1.04]`, `AveLncerLimiteRatio(1.04,3.96]`,
`AveLncerLimiteRatio(11.4,40.3]`, `AveLncerLimiteRatio(3.96,11.4]`,
`AveLncerLimiteRatio(40.3, Inf]`, `Ave6mEvolucaoAvencerRatio(0, Inf]`,
`Ven6mEvolucaoVencidoRatio(0.0001, Inf]`, `Ven6mEvolucaoVencidoRatio[-Inf,-0.0001]`,
`Avvencer(0,1.01e+04]`, `AVBenNegAVenRatio(0, Inf]`,
`AVeNnNociAVenRatio(0, Inf]`, LimDummy, VencidoDummy,
PrejuDummy, AVedncerDummy))
要以编程方式执行此操作,您需要以下内容:
for (i in 2:length(L1)) {
L1[[i]] <- substitute(x,list(x=gsub("V","v",deparse(L1[[i]]))))
}
(此示例仅将大写的V更改为小写的v ...)
this question的答案表明stringi::stri_trans_general(x,"Latin-ASCII")
会将重音符号转换为非重音类似物...