我觉得这是一个相当简单的问题。我正在处理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的列表。使用数组甚至是最有效的方法吗?
答案 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
。