【问题标题】:Change a dynamic variable name with rxSetVarInfo使用 rxSetVarInfo 更改动态变量名称
【发布时间】:2017-04-27 22:07:39
【问题描述】:

尝试使用 rxSetVarInfo 更改 XDF 的变量名称。

我想合并几个具有常见 var 名称的数据集。 (我知道 rxMerge 可以/将在需要的地方附加到文件名。我希望拥有比这更多的控制权。)

这行得通:

outLetter<- "A"
exp <- list(pct.A = list(newName = paste0("X.pct.",outLetter)))
rxSetVarInfo(varInfo = exp, data = tempXDFFile)

这就是我知道原始列名pct.A 的地方。如果是动态的呢?如果这是在使用不同outLetter 多次调用的函数中怎么办。 (“A”没有硬编码。)
这不起作用:

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)

是的,我可以对所有排列进行硬编码。试图找到更优雅的方法。

【问题讨论】:

    标签: microsoft-r


    【解决方案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)
    }
    

    【讨论】:

    • 完美运行。谢谢。
    猜你喜欢
    • 2016-08-31
    • 1970-01-01
    • 1970-01-01
    • 2011-07-14
    • 1970-01-01
    • 2023-03-04
    • 1970-01-01
    • 2020-09-20
    相关资源
    最近更新 更多