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"))
首先从列表中提取工作表名称,然后使用
==
运算符。这将为您提供一个逻辑向量:
x <- sapply(list_sheet_names, `[[`, 1) == 'Alpha_Beta'
您还可以使用它来对原始列表进行子集化:
list_sheet_names[x]
按如下方式使用
Filter
:
Filter(\(x)x[[1]] == 'Alpha_Beta', list_sheet_names)