我想列出满足特定条件(日期和货币)的目录中的所有文件。因此,只有一个条件,pattern
中的参数list.files
效果很好:
file.ls <- list.files(path='~/DATA/PiP/Curvas/',pattern='20130801')
对于我尝试过的多种情况:
file.ls <- list.files(path='~/DATA/PiP/Curvas/',pattern=c('20130801','USD'))
但与第一个结果相同。有没有办法在pattern
的{{1}}参数中有多个条件?
答案 0 :(得分:19)
file.ls <- list.files(path='~/DATA/PiP/Curvas/',pattern="20130801|USD")
答案 1 :(得分:10)
根据Baptiste和这篇文章的答案(list.files pattern argument in R, extended regular expression use),您可以使用以下表达式:
file.ls <- list.files(path='~/DATA/PiP/Curvas/',
pattern=glob2rx("*20130801*USD*"))
*
是通配符。
答案 2 :(得分:4)
Filter(function(x) grepl("USD", x), file.ls)
或者,你可以为模式构建一个正则表达式,它只匹配包含两个字符串的文件名,但这是一个向导的游戏。
答案 3 :(得分:3)
这是:
# git pull master
fatal: 'master' does not appear to be a git repository
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
答案 4 :(得分:1)
如果您想将pattern
保留为向量(如果您在package函数中使用它,并且希望允许用户将模式指定为向量,而不是让他们使用|
或*
),您可以按以下步骤进行设置:
pattern1 = c('20130801','USD')
file.ls <- list.files(path='~/DATA/PiP/Curvas/', pattern=paste0(pattern1, collapse="|"))
这还允许pattern1
向量包含所需的任意数量的元素,而无需调整代码。
答案 5 :(得分:0)
我认为您正在寻找AND
条件。然后我会使用:
file.ls <- grep(pattern = "(?=.*20130801)(?=.*USD)", x = list.files(path = '~/DATA/PiP/Curvas/'), value = TRUE, perl = TRUE)
我使用此命令返回用.tex
符号标记的+
文件(一种原始标记系统)。例如,要查找标记为+neuralnet
,和 +style
,和 +set
的文件,我使用:
grep("(?=.*\\+style)(?=.*\\+neuralnet)(?=.*\\+set)", list.files("./src", pattern = "*.tex$", full.names = TRUE), value = TRUE, perl = TRUE)
其中(?=)
是正面看,而\\+
用于转义+
符号,这是我用来标记文件的字符。您可以根据需要添加多达(?=...)
个AND条件。
我的.tex
文件是Latex TikZ
文件。这是部分列表:
[1] "./src/block_diagram-multilayer_perceptron+neuralnet+style+learn.tex"
[2] "./src/block_diagram-perceptron+neuralnet+set+learn.tex"
[3] "./src/discriminator+neuralnet+matrix+foreach+style.tex"
[4] "./src/foreach-neural_network-1h+neuralnet.tex"
[5] "./src/generative_adversarial_network_manual_net+neuralnet.tex"
[6] "./src/generator+neuralnet+matrix.tex"
[7] "./src/hopfield_auto_net+neuralnet+foreach+scope+learn+style+command.tex"
[8] "./src/ml_1h_manual_net+neuralnet+style+matrix+foreach.tex"
[9] "./src/ml_2h_manual_net-color+neuralnet+set+foreach.tex"
[10] "./src/ml_a3c_manual_net_arr+neuralnet.tex"
[11] "./src/ml_auto_net_arr+neuralnet+foreach+style+foreach.tex"
[12] "./src/ml-auto_net_4h_arr+neuralnet+matrix+foreach+style+scope.tex"
[13] "./src/ml-auto_net_bias_arr+neuralnet+learn+foreach+def+command+ifnum+style.tex"
[14] "./src/ml-auto_net_color+neuralnet+foreach.tex"
[15] "./src/ml-auto_net_icon+neuralnet+style+foreach+set+function+learn.tex"
[16] "./src/ml-SVM_manual+neuralnet.tex"
[17] "./src/nn-01-2_summarized+neuralnet+style+learn.tex"
[18] "./src/nn-02_auto_net+neuralnet+foreach+pgf+style+learn.tex"
[19] "./src/nn-03_auto_net+neuralnet+foreach+style+learn.tex"
[20] "./src/nn-04_auto_net+neuralnet+matrix+style+foreach.tex"
[21] "./src/nn-05_auto_net_arr+neuralnet+style+foreach+learn.tex"
[22] "./src/nn-06_manual_net_color+neuralnet+foreach+style.tex"
[23] "./src/nn-08-tkz-berge-01+neuralnet+scope+foreach+pkg.tex"
[24] "./src/nn-09_manual_net+neuralnet+foreach+scope.tex"
[25] "./src/stacked_blocks+neuralnet+3d+def+pgf+set+style.tex"
然后,通过使用grep
,list.files
和 regex 正向展望(?=...)
,我得到了选择{{1} }按我要处理的目的或活动进行归档。字符TikZ
在R和Linux中可以很好地用于标记。在Linux中,我将+
与find
和-and
开关一起使用。