【问题标题】:Importing files into array with R使用R将文件导入数组
【发布时间】:2013-02-15 02:48:58
【问题描述】:

我在一个文件夹中有多个 csv 文件。每个 csv 文件包含一个 200 行和 200 列的表。我可以单独引入每个文件并将其显示为矩阵。我也可以做一个目录并列出它们所在文件夹中的每个文件。我需要做的是引入每个文件,打开它们,然后将它们组合成一个数组。当我这样做时,虽然我收到警告说没有这样的文件。

我的代码是

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=" " 参数
  • 我没有在路径中放任何东西,但在我的实际代码中,我指定了路径。当我打印 x 时,所有文件都会列出。

标签: arrays r loops import


【解决方案1】:

首先,您确定您正在正确地将文件列表读入变量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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-01-14
    • 2015-11-27
    • 2018-03-16
    • 2012-07-24
    • 2013-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多