我是社区的新手,希望我的问题和示例符合标准。
我有一个带有两个字符向量的数据框。向量a中的值的长度是变化的,向量b中的值都完全由一个字符组成。
a <- as.character(c("tsm", "skr", "fl", "pfl", "ts", "St", "S"))
b <- as.character(c("m", "k", "l", "l", "s", "t", "S"))
uedf <- data.frame(a, b)
我想直接在向量b中指定的字符的左侧提取a中的字符。该字符在字符串中的位置可以变化。因此,我要从第一个字符串中提取“ s”(m的左侧),在第二个字符串中再次提取“ s”(k的左侧),依此类推。
正如我无法弄清楚如何使用做grepl()
(我不是很熟悉的正则表达式),我终于结束了的组合strsplit()
和str_sub()
。
str_sub(strsplit(uedf$a,split=uedf$b, fixed=FALSE), start = -1, end = -1)
在大多数情况下,此方法效果很好,除了第二个返回“)”而不是所需的“ s”的情况。
[1] "s" ")" "f" "f" "t" "S" ""
有什么想法可能是为什么以及如何解决这个问题?提前致谢!
我认为str_sub
仅适用于字符串,但是第二个字符串strsplit
为您提供了2个字符串的向量。
如果分隔符在每个字符串中仅出现一次,则可以完成此工作:
sapply(strsplit(a,split=b, fixed=FALSE), function(l) str_sub(l[[1]],-1,-1))
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句