Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从R中的Lappy输出中获取特定文件?_R_File_Lapply - Fatal编程技术网

如何从R中的Lappy输出中获取特定文件?

如何从R中的Lappy输出中获取特定文件?,r,file,lapply,R,File,Lapply,我以这种方式读取文件,速度似乎相当快: dirPath = paste0("D:/test") setwd(dirPath) SF <- list.files(recursive=T, pattern=paste(".csv"), full.names=TRUE) myfiles = lapply(SF, fread) 因此,我有两个子文件夹,每个子文件夹中有3个CSV文件。子文件夹中的CSV文件数始终相同 问题:给定myfiles,如何选择位于子文件夹B内的CSV文件?我需要单独访问此

我以这种方式读取文件,速度似乎相当快:

dirPath = paste0("D:/test")
setwd(dirPath)
SF <- list.files(recursive=T, pattern=paste(".csv"), full.names=TRUE)
myfiles = lapply(SF, fread)
因此,我有两个子文件夹,每个子文件夹中有3个CSV文件。子文件夹中的CSV文件数始终相同

问题:给定
myfiles
,如何选择位于子文件夹B内的CSV文件?我需要单独访问此子文件夹的1.csv、2.csv和3.csv。

由于
list.files()
只返回一个字符向量,您可以使用类似
grep的函数来搜索列表中的特定值。如果您想在“子文件夹B”中查找文件(并且不想在该目录中重新运行
list.files()
),您可以这样做

foldB <- grep("/SubFolderB/", SF, value=T)
foldB
# [1] "./SubFolderB/1.csv" "./SubFolderB/2.csv" "./SubFolderB/3.csv"

我们使用
basename()
删除文件夹信息,使用
gsub()
删除文件扩展名。

@MrFlickr:谢谢!另外,我刚刚注意到的另一个问题是:假设我在子文件夹A中有大约40个文件,名称为1.csv、2.csv、…40.csv。这些CSV文件按以下顺序存储在myfiles中:1,10,11,12,2,21,22,3,31,32等。是否有任何方法将其排序为1,2,3等。?如果没有,我如何生成像1,10,11,12,2,21.这样的索引。。以便以正确的顺序处理文件。问题是我必须知道,例如,第二个元素是2.csv(或10.csv)@MrFlick:非常感谢!你为什么不把答案贴出来?仅限评论当我猜测问题可能是什么或没有时间键入正确答案时,我会使用评论,但可以为OP提供正确方向的观点。如果我发现我的评论完全满足原来的问题,我会把它们转移到一个答案。
foldB <- grep("/SubFolderB/", SF, value=T)
foldB
# [1] "./SubFolderB/1.csv" "./SubFolderB/2.csv" "./SubFolderB/3.csv"
gsub("\\.[^.]*$","",basename(foldB))
# [1] "1" "2" "3"