我在这里阅读了一些文件匹配的帖子,但是我的问题并不完全相同。
我正在尝试查找与3个条件匹配的文件,并且所有3个条件都是循环中另一个3个变量的值,因此看起来我无法直接将变量放入模式语句中
这里是例子
c1 = "Curr Month"
c2 = "Entity Lst Yr"
c3 = "36008"
file_from = "my_path/"
f = list.files(path = paste0(file_from, "Account/"), pattern = glob2rx(c1*c2*c3))
我的错误消息在模式语句中
二进制运算符的非数字参数
任何想法都非常感谢,非常感谢!
答案 0 :(得分:1)
您是否要将c1-3组合为正则表达式,且中间使用通配符?以下工作吗?
...
uniWebView.SetShowSpinnerWhileLoading(true);
uniWebView.ReferenceRectTransform = gameObject.GetComponent<RectTransform>();
uniWebView.Show(true);
uniWebView.LoadHTMLString(YoutubeHTMLString, "https://www.youtube.com/");
}
答案 1 :(得分:0)
Uwe的评论对您来说可能最简单。如果可以按任何顺序排列,那么您需要更有创造力。
由于我没有您的文件或类似文件,因此我将创建一些示例:
# filelisting <- list.files(path=...) # no pattern
filelisting <- c(
"Rob travel v1.2.docx",
"the v1.2 version of travel for Rob.xlsx",
"the v1.3 version of travel for Rob.xlsx",
"the v1.2 version of travel for Carol.xlsx",
"something else entirely.pptx",
"C_Mu.R",
"My travel v1.2.txt"
)
c1 <- "Rob"
c2 <- "travel"
c3 <- "v1.2"
如果您需要全部三个但允许不同的订单,那么
grepl(paste(c1,c2,c3,sep=".*"), filelisting)
# [1] TRUE FALSE FALSE FALSE FALSE FALSE FALSE
失败,因为它错过了第二个文件。
这是一个想法:
sapply(c(c1,c2,c3), grepl, filelisting)
# Rob travel v1.2
# [1,] TRUE TRUE TRUE
# [2,] TRUE TRUE TRUE
# [3,] TRUE TRUE FALSE
# [4,] FALSE TRUE TRUE
# [5,] FALSE FALSE FALSE
# [6,] FALSE FALSE FALSE
# [7,] FALSE TRUE TRUE
从这里,您可以简单地查找所有值都为true的行,例如
apply(sapply(c(c1,c2,c3), grepl, filelisting), 1, all)
# [1] TRUE TRUE FALSE FALSE FALSE FALSE FALSE
(使用该索引在filelisting
上进行索引。
如果您有三个以上的条件和/或条件数量可以更改,则可以对此进行概括。
allcs <- c("Rob", "travel", "v1.2", "docx")
apply(sapply(allcs, grepl, filelisting), 1, all)
# [1] TRUE FALSE FALSE FALSE FALSE FALSE FALSE
在每个字符串中,您可以使用真正的正则表达式类型的东西(这意味着您需要转义正则表达式语言):
allcs <- c("Rob", "travel", "v1.2", "xlsx|docx")
apply(sapply(allcs, grepl, filelisting), 1, all)
# [1] TRUE TRUE FALSE FALSE FALSE FALSE FALSE