gpt4 book ai didi

r - 如何提取多个字符串的匹配部分?

转载 作者:行者123 更新时间:2023-12-04 12:11:23 25 4
gpt4 key购买 nike

我有多个字符串,我想提取匹配的部分。实际上我的字符串是目录,我需要选择在哪里写文件,这是匹配所有字符串的位置。例如,如果您有一个包含三个字符串的向量:

data.dir <- c("C:\\data\\files\\subset1\\", "C:\\data\\files\\subset3\\", "C:\\data\\files\\subset3\\")

...所有字符串中匹配的部分是“C:\data\files\”。我怎样才能提取这个?

最佳答案

strsplitintersect 使用 Reduce 递归地重叠部分。然后,您可以通过 paste-ing 将其拼凑起来。

paste(Reduce(intersect, strsplit(data.dir, "\\\\")), collapse="\\")
#[1] "C:\\data\\files"

正如@g-grothendieck 指出的那样,这在某些情况下会失败,例如:

data.dir <- c("C:\\a\\b\\c\\", "C:\\a\\X\\c\\") 

一个丑陋的 hack 可能是这样的:

tail(
Reduce(
intersect,
lapply(strsplit(data.dir, "\\\\"),
function(x) sapply(1:length(x), function(y) paste(x[1:y], collapse="\\") )
)
),
1)

...这将处理任何一种情况。


或者,如果您只有一个额外的目录级别,请使用 dirname:

unique(dirname(data.dir))
#[1] "C:/data/files"

关于r - 如何提取多个字符串的匹配部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40834854/

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