【发布时间】:2015-06-24 05:06:37
【问题描述】:
我正在尝试根据相邻列的值在新列中分配名称。 我正在使用一个函数,它接受一个模式并将其替换为另一个:
sub<-function(pattern, replacement, x, ...) {
result <- x
for (i in 1:length(pattern)) {
result <- gsub(pattern[i], replacement[i], result, ...)
}
result
}
我可以采取以下措施:
df$x<-as.character(df$x)
df$y<-(sub(c("1A1","1B2", "1.00E+01"),
c("P1", "P2", "P3"), df$x))
因此,df$y 现在将包含 P1、P2,其中 df$x 中存在 1A1、1B2。但是,“1.00E+02”并没有给出df$y中的P3,1.00E+02被复制到它上面。
我是否遗漏了一些关于指数以及它们如何被解读为模式的内容?
这是我的数据表的示例,其中 df$x 是 ID,df$y 是名称:
Name ID
p1 1A1
p2 1B2
1.00E+01 1.00E+01
任何帮助将不胜感激。 谢谢MF
【问题讨论】:
-
阅读文档。如果将长度 > 1 的向量作为
pattern传递,则仅使用其第一个元素。此外,默认情况下,模式被理解为正则表达式。 -
对不起,如果我错了,但如果模式只识别使用的第一个元素,那么 1A1 和 1B2 之间就没有区别,但是有。只有 1.00E+01 会导致问题。
-
我无法重现这个。如果我尝试,只会更改第一个元素。
-
这很奇怪。如果我从这里复制并运行函数 sub,则使用的字符串不是第一个元素。
-
哦,对不起。我没有看到你定义了一个函数
sub。这是个坏主意,因为有一个(密切相关的)基本函数sub。
标签: r string type-conversion