gsub替换单次出现两次

时间:2014-10-29 11:45:39

标签: r replace gsub

我使用以下内容(取自replace string in dataframe)将西班牙语单词“Si”或“Sí”替换为“是”

(CensResultsUnpivot <- as.data.frame(lapply(CensResultsUnpivot, function(x) if (is.character(x)|is.factor(x)) gsub("[Si|Sí]", "Yes", x) else x)))

我到处得到的结果是“YesYes”而不是“Yes”......?为什么呢?

2 个答案:

答案 0 :(得分:4)

尝试

  gsub("Si|Sí", "Yes", x)

而不是

 gsub("[Si|Sí]", "Yes", x)

当使用括号时,R将“S”和“i”中的任何字符替换为“是”,这就是为什么你得到“YesYes”

答案 1 :(得分:2)

这是更快/更好的R代码

testFrame <- as.data.frame(matrix(1:5,ncol=5,nrow=4))
  V1 V2 V3 V4 V5
1  1  5  4  3  2
2  2  1  5  4  3
3  3  2  1  5  4
4  4  3  2  1  5

testFrame[testFrame==1 | testFrame ==2] <- "yes"

> testFrame
   V1  V2  V3  V4  V5
1 yes   5   4   3 yes
2 yes yes   5   4   3
3   3 yes yes   5   4
4   4   3 yes yes   5