【发布时间】:2018-04-03 21:37:14
【问题描述】:
我是社区的新手,希望我的问题和示例符合标准。
我有一个包含两个字符向量的数据框。向量 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 中指定的字符左侧的字符。该字符在字符串中的位置可能会有所不同。因此,我想从第一个字符串中提取“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" ""
任何想法为什么会这样以及我如何解决这个问题? 提前致谢!
【问题讨论】: