【问题标题】:Trying to read multiple files of different lengths into an array in R尝试将多个不同长度的文件读入R中的数组
【发布时间】:2018-08-14 23:47:39
【问题描述】:

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

【问题讨论】:

    标签: arrays r list


    【解决方案1】:

    因为要访问数组的第 i 个二维单元,需要将 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

    【讨论】:

      猜你喜欢
      • 2021-08-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多