使用 r 来查找列表中的字符串

问题描述 投票:0回答:2

excel 文件的电子表格名称有 6700 个元素的列表。我对“Alpha_Beta”感兴趣,但有类似的名称,例如“Alpha_Beta calc”,“Alpha_Beta input”,“Alpha-Beta”,“Alpha Calc”,..

grep("Alpha_Beta", list)
给我的不仅仅是“Alpha_Beta”,例如,结果还包括“Alpha_Beta 输入”。

我最终得到了一个两步解决方案。

z <- grep("\\<Alpha\\>", list_sheet_names, value = T)

y <- grep("Alpha_Beta", z, value =  T)

我想知道是否有更好的方法。

结果

dput(head(list_sheet_names))

list(list("02Annual", file_names = "2002 reports/Ec2002/annual2002.xls"), 
    list("020102", file_names = "2002 reports/Ec2002/ecem020102.xls"), 
    list("020109", file_names = "2002 reports/Ec2002/ecem020109.xls"), 
    list("020116", file_names = "2002 reports/Ec2002/ecem020116.xls"), 
    list("020123", file_names = "2002 reports/Ec2002/ecem020123.xls"), 
    list("020130", file_names = "2002 reports/Ec2002/ecem020130.xls"))
r excel list grep
2个回答
0
投票

首先从列表中提取工作表名称,然后使用

==
运算符。这将为您提供一个逻辑向量:

x <- sapply(list_sheet_names, `[[`, 1) == 'Alpha_Beta'

您还可以使用它来对原始列表进行子集化:

list_sheet_names[x]

0
投票

按如下方式使用

Filter

 Filter(\(x)x[[1]] == 'Alpha_Beta', list_sheet_names)
© www.soinside.com 2019 - 2024. All rights reserved.