Отредактируйте объект term в функции glm () - PullRequest
0 голосов
/ 23 октября 2018

У меня есть объект с именем modelTrain, сгенерированный функцией glm().Этот объект имеет несколько других объектов, таких как: coefficients, formula, terms и т. Д.

 modelTrain<- glm(Def90Adj ~ .-1,data=base,family=binomial(link='logit'))

Мне нужно изменить имя некоторых переменных, сохраняя значения, используемые для прогнозирования.Один из объектов в modelTrain имеет тип 'call' (или 'language')

Его содержимое выглядит следующим образом:

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" не найден.

1 Ответ

0 голосов
/ 24 октября 2018

Метод грубой силы использует 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 ...)

Ответы на на этот вопрос предполагают, что stringi::stri_trans_general(x,"Latin-ASCII") преобразует символы с акцентом в их неакцентированные аналоги ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...