如何有效地成对替换字符串

时间:2013-06-22 14:59:00

标签: r

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

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

并且应该返回

"price"      "eventdummy"

2 个答案:

答案 0 :(得分: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])

答案 1 :(得分: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 ...中许多软件包中的东西......