我想根据相邻列的值在新列中指定名称。 我使用一个函数,它接受一个模式并用另一个替换它:转换指数字符串
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,其中1A1, 1B2以df $ x的形式出现。然而,“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',则只使用其第一个元素。此外,默认情况下,该模式被理解为正则表达式。 – Roland
对不起,如果我错了,但如果模式只识别使用的第一个元素,那么1A1和1B2之间没有区别,但是有。这只是导致问题的1.00E + 01。 – MRF
我无法重现这一点。如果我尝试它,只有第一个元素被更改。 – Roland