使用R将文件导入数组

3
我有多个csv文件在同一个文件夹中。每个csv文件都包含一个200行和200列的表格。我可以逐个导入每个文件并将其显示为矩阵。我也可以执行dir命令并列出它们所在的文件夹中的每个文件。但我需要做的是导入每个文件,打开它们,然后将它们合并成一个数组。但当我这样做时,会收到“没有这样的文件”的警告。

我的代码如下:

x <- dir(path=" ", pattern = ".csv")
num <- array(0,dim=c(200,200,length(x)))
for(i in 1:length(x)){
  temp <- read.csv(x[i], skip=1)
  temp2 <- temp[,2]
  num[,i]<-temp2

}

这会让我收到警告

Error in file(file, "rt") : cannot open the connection
In addition: Warning message:
In file(file, "rt") :
  cannot open file 'test_1.csv': No such file or directory

再次强调,当我处理单个文件时,我可以很好地导入它们,并将它们列出并作为矩阵打开。为什么我会收到此警告?为什么R能够一次一个地找到我的文件,但不能同时处理多个文件?


请查看您的 x 中有什么,它似乎没有捕获文件。尝试 print(x) 并查看它是否具有预期文件列表。如果没有,请检查您的 path=" " 参数。 - Ricardo Saporta
我在这里的路径中没有放任何东西,但在我的实际代码中我已经指定了路径。当我打印x时,所有文件都被列出。 - user2113499
1个回答

2

首先,请确认您是否正确将文件列表读入变量x中。我认为您的for循环存在一些问题。同时,请确认您是否在与这些文件相同的目录下。在dir命令中,您输入了" "作为path变量,我不确定那是什么意思。请尝试以下代码:

> x <- dir(pattern = ".csv")
> num <- array(0,dim=c(200,200,length(x))) # in my case `length(x)` is 9.
> m <- matrix(rnorm(200*200),nrow=200,ncol=200) # generate some 200x200 matrix
> for(i in 1:length(x)){
    num[,,i] <- m # notice its num[,,i] and not num[,i]
}
> num[1:4,1:4,9]
           [,1]        [,2]       [,3]       [,4]
[1,] -1.5674073  0.05364477  0.8367233  1.7995047
[2,] -0.8613244  1.00400787 -0.2464169 -1.2897856
[3,] -0.7907845 -1.40617992  1.0596680 -0.5270983
[4,] -0.5206049  0.66253519  1.6820722  1.2017410

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接