尝试将不同长度的多个文件读入R中的数组

时间:2018-03-07 00:46:18

标签: arrays r list

我觉得这是一个相当简单的问题。我正在处理217个不同的“文本”(它们实际上是我已转换为文本的.edf文件)文件,每个文件都包含9列属性表。数据来自掉落到海底的传感器,因此每个传感器都有不同的行数。我想将所有这些文件合并到一个尺寸为9399x9x217的R中的一个数组中。 (9399是最大文件中的行数)。目前我正在使用此代码:

omgdatlist <- list.files(pattern ="*.edf")
named.list <- array(0, dim = c(9399, 9, 217))
for (i in 1:217)
{
named.list[i] <- matrix(assign(omgdatlist[i], read.table(omgdatlist[i], header = FALSE, skip = 51, col.names = c("Time(sec)", "Frame", "Depth(m)", "Temperature(C)", "Conductivity", "Salinity", "Sound Velocity", "Density", "Status"))), nrow = 9399, ncol = 9)
}

但是,它返回的是18356247的列表。使用数组甚至是最有效的方法吗?

1 个答案:

答案 0 :(得分:0)

因为您想要访问阵列的第二个2D单元格,所以需要将named.list[i]替换为named.list[,,i]

以下是最低工作示例:

named.list <- array(0, dim = c(3, 1, 2))
for (i in 1:dim(named.list)[3])
{
  named.list[,,i] <- array(i, dim = c(3, 1))
}
named.list 

返回

> named.list
, , 1

     [,1]
[1,]    1
[2,]    1
[3,]    1

, , 2

     [,1]
[1,]    2
[2,]    2
[3,]    2

至于效率,您可能需要查看?sapply?apply