2

我有一个系数名称列表,我想用更好的标签替换技术术语。函数调用看起来像这样

replace.pairwise(list("coef1","coef2"),
                 coef1="price",coef2="eventdummy", coef3="income")

并且应该返回

"price"      "eventdummy"
4

2 回答 2

3

这很容易。将翻译存储在命名向量中:

translations <- c(coef1 = "price", coef2 = "eventdummy", coef3 = "income")

然后使用[

vector.of.strings <- c("coef1","coef2")

translations[vector.of.strings]
#        coef1        coef2 
#      "price" "event dummy"

如您所见,输出也是一个命名向量。如果名称对您来说是个问题,您可以这样做unname(translations[vector.of.strings])

此外,如果您的原始姓名在您的示例中的列表中,您已经知道unlist

translations[unlist(list.of.strings)]

重要提示:如果您的所有原始名称都有替换,则上述所有内容都可以正常工作。如果不是这种情况,并且您只想修改那些有替换的名称,您可以执行以下操作:

ifelse(is.na(translations[vector.of.strings]),
       vector.of.strings,
       translations[vector.of.strings])
于 2013-06-22T23:08:25.473 回答
2

对我有用的功能是

replace.pairwise=function(listofstrings,...){
  ss=c(unlist(listofstrings))
  pairs=list(...)

  for(s in 1:length(ss)){
    for(p in 1:length(pairs)){
      ss[s]=gsub(names(pairs)[p],pairs[p],ss[s])
    }  
  }
  ss
}

我确信这不是最有效的方法,但它确实有效。我想知道我是否再次编写了已经隐藏在 R 中众多包之一中的东西......

于 2013-06-22T14:58:59.890 回答