Изменить имя динамической переменной с помощью rxSetVarInfo
Попытка изменить имя переменной XDF с помощью rxSetVarInfo.
Я хочу объединить несколько наборов данных с общими именами переменных. (Я знаю, что rxMerge может / будет добавлять к именам файлов, где это необходимо. Я хочу иметь больше контроля, чем это.)
Это работает:
outLetter<- "A"
exp <- list(pct.A = list(newName = paste0("X.pct.",outLetter)))
rxSetVarInfo(varInfo = exp, data = tempXDFFile)
Вот где я знаю оригинальное имя столбца, pct.A
, Что если это динамично? Что делать, если это в функции, которая вызывается несколько раз с разными outLetter
"S. ("А" не является жестко закодированным.)
Это не работает:
function(outLetter){
exp <- list(paste0("pct.",outLetter) = list(newName = paste0("X.pct.",outLetter)))
rxSetVarInfo(varInfo = exp, data = tempXDFFile)
}
И не делает:
exp <- parse(text = exp)
rxSetVarInfo(varInfo = exp, data = tempXDFFile)
Да, я могу жестко закодировать все перестановки. Пытаюсь найти более элегантный подход.
1 ответ
Пожалуйста, попробуйте этот код:
dynamicName <- function(outLetter){
exp <- vector(mode="list", length=1)
names(exp) <- paste0("pct.",outLetter)
exp[[paste0("pct.",outLetter)]] = list(newName = paste0("X.pct.",outLetter))
rxSetVarInfo(varInfo = exp, data = tempXDFFile)
}
Перед вызовом rxSetVarInfo() "exp" содержит:
$pct.A
$pct.A$newName
[1] "X.pct.A"
Запустив ваше дело "это работает", я вижу:
> outLetter<- "A"
> exp <- list(pct.A = list(newName = paste0("X.pct.",outLetter)))
>
> exp
$pct.A
$pct.A$newName
[1] "X.pct.A"
Надеюсь это поможет!
Обратите внимание, пожалуйста, убедитесь, что ваша функция динамического именования имеет доступ к переменной "tempXDFFile", вы можете рассмотреть возможность ее передачи в качестве параметра, например:
dynamicName <- function(outLetter, data){
exp <- vector(mode="list", length=1)
names(exp) <- paste0("pct.",outLetter)
exp[[paste0("pct.",outLetter)]] = list(newName = paste0("X.pct.",outLetter))
rxSetVarInfo(varInfo = exp, data = data)
}