R 中多个搜索模式的 grep() 循环
grep() loop for multiple search patterns in R
我有许多不同的值编码的信息(作为一个因素的水平),我需要根据在每个水平中找到的多个标准来统一这些水平。
假设所有这些因素水平实际上意味着 Spring 2007 年:
spring 07, S7, SP07, spring2007, SPRING07
...
因为我有不同的年份和两个季节(Spring 和秋季),我需要根据两个标准替换因子水平:季节 和 年。问题是,我可以 运行 这段代码,但它不会修改数据框中的任何内容 s2
。
for(i in 1: ncol(s2){
levels(s2[,i]) <- replace(levels(s2[,i]),
(grep("s & 7",levels(s2[,i]),
ignore.case=TRUE)),
S2007)
.....
}
你觉得我应该修改什么?提前致谢!
您的正则表达式不正确,它从字面上匹配字符串 "s & 7"
,因为&
不是特殊的正则表达式字符。
改为使用 "s.*7"
,这意味着 s
后跟任何内容 0 次或多次,然后是 t
。
我有许多不同的值编码的信息(作为一个因素的水平),我需要根据在每个水平中找到的多个标准来统一这些水平。
假设所有这些因素水平实际上意味着 Spring 2007 年:
spring 07, S7, SP07, spring2007, SPRING07
...
因为我有不同的年份和两个季节(Spring 和秋季),我需要根据两个标准替换因子水平:季节 和 年。问题是,我可以 运行 这段代码,但它不会修改数据框中的任何内容 s2
。
for(i in 1: ncol(s2){
levels(s2[,i]) <- replace(levels(s2[,i]),
(grep("s & 7",levels(s2[,i]),
ignore.case=TRUE)),
S2007)
.....
}
你觉得我应该修改什么?提前致谢!
您的正则表达式不正确,它从字面上匹配字符串 "s & 7"
,因为&
不是特殊的正则表达式字符。
改为使用 "s.*7"
,这意味着 s
后跟任何内容 0 次或多次,然后是 t
。