我有一个系数名称列表,我想用更好的标签替换技术术语。函数调用看起来像这样
replace.pairwise(list("coef1","coef2"),
coef1="price",coef2="eventdummy", coef3="income")
并且应该返回
"price" "eventdummy"
我有一个系数名称列表,我想用更好的标签替换技术术语。函数调用看起来像这样
replace.pairwise(list("coef1","coef2"),
coef1="price",coef2="eventdummy", coef3="income")
并且应该返回
"price" "eventdummy"
这很容易。将翻译存储在命名向量中:
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])
对我有用的功能是
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 中众多包之一中的东西......