R-调用导入文件夹时未找到文件,但作为单个文件打开并列出。文件显示全部?
我以前成功地使用过一些代码。它应该将给定目录中的所有文件导入到单个数据集中。我有一个新的数据文件夹,现在我无法让它工作。各个文件将被读入。List.files还将显示文件夹中的所有文件。所以我不知所措R-调用导入文件夹时未找到文件,但作为单个文件打开并列出。文件显示全部?,r,R,我以前成功地使用过一些代码。它应该将给定目录中的所有文件导入到单个数据集中。我有一个新的数据文件夹,现在我无法让它工作。各个文件将被读入。List.files还将显示文件夹中的所有文件。所以我不知所措 list.files('../data/') [1] "B101-2.txt" "B101.txt" "B116.txt" "B6.txt" "B65.txt" "B67-2.txt" "B67.txt" [8] "B70.txt" "B71-2.txt" "
list.files('../data/')
[1] "B101-2.txt" "B101.txt" "B116.txt" "B6.txt" "B65.txt" "B67-2.txt" "B67.txt"
[8] "B70.txt" "B71-2.txt" "B71.txt" "B95-2.txt" "B95.txt" "B96-2.txt" "B96.txt"
[15] "B98-2.txt" "B98.txt" "B99-2.txt" "B99.txt"
a = ldply(
.data = list.files(
path = '../data/'
)
, .fun = function(x){
from_header = scan(x,n = 1,skip=1,quiet=T)
to_return = read.table(
file = x
, skip = 20
, sep = '\t'
, fill = TRUE
)
to_return$condition = from_header[1]
return(to_return)
}
, .progress = 'text'
)
文件(文件“r”)中出错:无法打开连接
此外:警告信息:
在文件中(文件“r”):
无法打开文件“B101-2.txt”:没有此类文件或目录
list.files(“../data/”)
显示文件的输出,如B101-2.txt
等,但是从调用list.files()
可以看到相对路径是。/data/
。因此,如果您尝试这样做,例如,read.csv(file=“B101-2.txt”)
就会失败。相反,调用应该是read.csv(file=“../data/B101-2.txt”)
。问题的解决方案是使用寻址文件所需的完整相对路径
将此用作ldply()
的第一个参数:
关键是
list.files()
返回文件名列表(带扩展名),而不是这些文件的完整路径或相对路径。可以直接在list.files
中指定完整路径名
list.files(path = '../data', full.names = TRUE)
注意路径规范中省略了/
。如果保留在中,文件将列为.data//B101-2.txt
,这将失败
测试模拟您在中注意到的文件结构:
现在,我们从analysis文件夹中运行您的代码
setwd("analysis")
a = ldply(
.data = list.files(path = '../data', full.names = TRUE)
, .fun = function(x){
from_header = scan(x,n = 1,skip=1,quiet=T)
to_return = read.table(file = x, skip = 20, sep = '\t', fill = TRUE)
to_return$condition = from_header[1]
return(to_return)
}
, .progress = 'text'
)
代码读入所有三个文件,并为每个文件输出第21-22行
a
V1 V2 V3 condition
1 1 2 3 1
2 4 5 6 1
3 7 8 9 2
4 10 11 12 2
5 13 14 15 3
6 16 17 18 3
这并没有解决问题。该文件结构是一个包含分析和数据子文件夹的项目,这就是为什么“./data/”向上和向下进入数据文件夹的原因。我可以读取单个文件。读取整个文件夹的调用失败。一个接一个地读取它们会很痛苦。请给我一个文件的相对路径,您可以读取。
list.files(“../data/”)
[1]“B101.txt”。。。它可以工作` to_return=read.table(file='../data/B101.txt',skip=20,sep='\t',fill=TRUE)`这可以工作,但是当我尝试使用函数读取我得到的所有文件时:文件中出错(文件,“r”):无法打开连接另外:警告消息:文件中(文件“r”):无法打开文件“B101.txt”:没有此类文件或directory@OrianeLandry这将读取我的虚拟示例中所有必需的文件。您的工作目录是否如TimBiegeleisen的回答中所述设置为“测试/分析”,其中您的数据将位于“测试/数据”中?是的,工作目录为“测试/分析”。相同的错误消息。
setwd("analysis")
a = ldply(
.data = list.files(path = '../data', full.names = TRUE)
, .fun = function(x){
from_header = scan(x,n = 1,skip=1,quiet=T)
to_return = read.table(file = x, skip = 20, sep = '\t', fill = TRUE)
to_return$condition = from_header[1]
return(to_return)
}
, .progress = 'text'
)
a
V1 V2 V3 condition
1 1 2 3 1
2 4 5 6 1
3 7 8 9 2
4 10 11 12 2
5 13 14 15 3
6 16 17 18 3