使用gsub和paste从某些变量中删除部分文本

时间:2018-04-05 00:08:20

标签: r rename

我正在使用gsubpaste来更改数据框的列。特别是,对于以.h结尾的所有列,其中h是从023的数字,我使用以下脚本(例如,变量{{1} })

p.1

该脚本不适用于所有不以h <- 1 gsub(paste(".", h, sep = ""), "", "p.1") # "p" # correct! 结尾的变量。例如

.h

但是,此代码产生“pro0”,而不是“prob10”。类似地,

h <- 1
gsub(paste(".", h, sep = ""), "", "prob10")
# "pro0"          # not correct!

给了我错误的答案。我不明白为什么h <- 0 gsub(paste(".", h, sep = ""), "", "prob10") # "prob" # not correct! 不起作用(首先)以及为什么后两个例子给出不同的结果。谢谢。

1 个答案:

答案 0 :(得分:1)

gsub很好用,就像你期望的那样。 因为&#34;。&#34;是一个元字符。

  

元字符的最简单的例子是句号。

     

&#39;&#39;   句号符合任何类型的任何单个字符(除此之外)   来自换行符)。

     

例如,正则表达式&#34; .at&#34;意思是:任何   信后面是字母&#39; a&#39;后面是字母&#39;。&#39;

     

&#34; .AT&#34; =&GT; 上的 cat

(见https://www.stat.auckland.ac.nz/~paul/ItDT/HTML/node84.html

你的工作代码是

for (h in 23:0) 
{gsub(paste(".", h, sep = ""), "", "p.1", fixed = TRUE)
}