【问题标题】:R: Extract data from txt files and store the data in one cellR:从txt文件中提取数据并将数据存储在一个单元格中
【发布时间】:2015-09-08 18:57:28
【问题描述】:

我有一个 data.frame,其中包含元数据和包含我的数据的 txt 文件的文件名路径

data <- structure(list(region = structure(1:3, .Label = c("DE", "GB", "USA"), class = "factor"), name = structure(c(1L, 3L, 2L), .Label = c("File1", "Loc7812_Temp", "Loc889"), class = "factor"), txt_path = structure(c(1L,3L, 2L), .Label = c("/home/xyz/Downloads/Data/file1.txt", "/home/xyz/Downloads/Data/FolderTempData/datatemp7812.txt", "/home/xyz/Downloads/Data/Raw/datfile889.txt"), class = "factor")), .Names = c("region", "name","txt_path"), class = "data.frame", row.names = c(NA, -3L))

data
  region         name                                                 txt_path
1     DE        File1                       /home/xyz/Downloads/Data/file1.txt
2     GB       Loc889              /home/xyz/Downloads/Data/Raw/datfile889.txt
3    USA Loc7812_Temp /home/xyz/Downloads/Data/FolderTempData/datatemp7812.txt

可以通过我的Dropboxhere在文件夹结构中下载的txt文件

我想做的是将数据包含在一个附加列中,以便能够将数据和元数据与另一个数据帧进行比较。问题是 .txt 文件中的数据具有不同的行和列长度,我不知道如何有效地存储它。

我可以使用以下命令将来自不同文件路径的数据读入列表

list <- lapply(file.path(data$txt_path), read.table, header=TRUE,sep="\t", fill=TRUE, fileEncoding="latin1")

但是,通过此步骤,我将失去与元数据的连接。如何将此信息存储在附加列中,以便将不同 txt 文件的全部信息放入与文件路径和元数据信息相对应的一个行元素中(可能在 data.frame 中的列表中?在 Matlab 中你可以这样做通过使用结构)

在下一步中,我将合并数据并消除重复项,这就是我想将数据“打包”到一个行元素中的原因。

【问题讨论】:

    标签: r list input


    【解决方案1】:

    数据框在技术上是一个列表,因此它本身也可以有嵌套列表。这是一个简单的例子:

    dt=data.frame(x=LETTERS[1:10],y=1:10)
    
    z=list("a","b","c")
    z=list(z,z,z,z,z,z,z,z,z,z)
    dt$z=z
    class(dt)
    class(dt$z)
    dt$z
    

    但是,以后再处理它会非常困难。 我建议您将文件内容单独保存在一个列表中,并在您的 data.frame 中创建 ID 变量以保持与该列表的连接:

    data$ID = 1:dim(data)[1]
    

    这样您就可以随时通过list[data$ID]访问文件内容

    【讨论】:

      猜你喜欢
      • 2021-01-18
      • 2021-12-13
      • 2017-10-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多