我有以下内容
list <- c("AB", "G", "H")
现在我有一些应该被替换的字母。太好了。 B和H应该被替换。
所以我没有:
replace_letter <- c("B", "H")
for(letter in replace_letter){
for (i in list){
print(i)
print(letter)
if(grepl(letter, i)){
new_value <- gsub(letter,"XXX",i)
print("yes")
}
else{
print("no")
}
}
}
但是我的代码中的XXX应该替换为某些查找值/。 所以改为B - > B +,而不是H - > ħ**。
所以我需要某种字典功能来用特定的东西替换XXX。
有人建议我如何将其包含在上面的代码中吗?
答案 0 :(得分:1)
数据和字典
dictionary <- data.frame(From = LETTERS,
To = LETTERS[c(2:length(LETTERS), 1)], stringsAsFactors = F)
set.seed(1234)
data <- LETTERS[sample(length(LETTERS), 10, replace = T)]
这是替换功能
replace <- function(input, dictionary){
dictionary[which(input == dictionary$From),]$To
}
将其应用于数据:
sapply(data, replace, dictionary = dictionary)
# C Q P Q W Q A G R N
# "D" "R" "Q" "R" "X" "R" "B" "H" "S" "O"
您只需根据需要调整字典。
答案 1 :(得分:1)
我使用函数plyr::mapvalues
来执行此操作。该函数有三个参数,即用于替换的字符串,以及定义替换的两个向量from
和to
。
e.g。
plyr::mapvalues(letters[1:3], c("b", "c"), c("x", "y"))
# [1] "a" "x" "y"
答案 2 :(得分:0)
我切换到了较新的@SpringBootApplication
库,因此我将在此处添加另一个答案:
在交互式会话中,我将直接在dplyr
中输入替换项:
dplyr::recode
使用预定义词典,由于dplyr::recode(letters[1:3], "b"="x", "c"="y")
# [1] "a" "x" "y"
的整洁语义,您必须使用UQS
来取消对词典的引用:
dpylr