我有一个系数名称列表,我想用更好的标签替换技术术语。 函数调用看起来像这样
replace.pairwise(list("coef1","coef2"),
coef1="price",coef2="eventdummy", coef3="income")
并且应该返回
"price" "eventdummy"
答案 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 ...中许多软件包中的东西......