gpt4 book ai didi

r - 根据R中另一个向量中的字符从字符串中提取字符

转载 作者:行者123 更新时间:2023-12-02 08:08:06 25 4
gpt4 key购买 nike

我是社区的新手,希望我的问题和示例符合标准。

我有一个包含两个字符向量的数据框。向量 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)

我想提取 a 中的字符直接到向量 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" "" 

任何想法为什么会这样以及我如何解决这个问题?提前致谢!

最佳答案

我认为 str_sub 仅适用于字符串,但对于第二个字符串,strsplit 为您提供了一个包含 2 个字符串的向量。

如果分隔符在每个字符串中只出现一次,这将完成工作:

sapply(strsplit(a,split=b, fixed=FALSE), function(l) str_sub(l[[1]],-1,-1))

关于r - 根据R中另一个向量中的字符从字符串中提取字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49639496/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com