使用R中的查找表替换字符向量中的值

时间:2015-08-05 09:14:40

标签: r


我有这样的事情:

  #Change deg
  x1 <- gsub("&deg;","°",x1)

  #Change ohm
  x1 <- gsub("&ohm;","Ω",x1)

  #change divide
  x1 <- gsub("&divide;","÷",x1)

  #change minus
  x1 <- gsub("&minus;","-",x1)

但是有很多值,我不想在r脚本中编写所有内容。我有一张桌子,看起来像这样

&newtonm;   N m 
&reg;   ®
&deg;   °
&minus; -

如何查找表并在R脚本中进行更改?

1 个答案:

答案 0 :(得分:4)

以下是使用Reduce()

完成此操作的方法
lookup <- data.frame(pat=c('&newtonm;','&reg;','&deg;','&minus;'),rep=c('N m','®','°','-'),stringsAsFactors=F);
lookup;
##         pat rep
## 1 &newtonm; N m
## 2     &reg;   ®
## 3     &deg;   °
## 4   &minus;   -
entityrep <- function(x) Reduce(function(x,r) gsub(lookup$pat[r],lookup$rep[r],x,fixed=T),seq_len(nrow(lookup)),x);
x1 <- 'test &newtonm; &reg; &deg; &minus; test';
entityrep(x1);
## [1] "test N m ® ° - test"