【问题标题】:How to create a column which which contains the name of the file in R如何在R中创建一个包含文件名的列
【发布时间】:2021-02-12 17:38:58
【问题描述】:

我正在尝试创建一个循环来导入多个文件并将它们合并。我想找到一种方法,在此过程中创建一个名为“文件名”的新列,其中包含每行来自的输入文件的名称。这可能吗?

【问题讨论】:

  • 将文件名保存为变量,保存在字符串向量中。循环遍历 stings 向量的每个元素,然后创建一个单独的列向量并将其连接到一个矩阵,该矩阵每次都初始化为空矩阵。
  • 希望这有帮助:)

标签: r


【解决方案1】:
my_data <- lapply(setNames(nm=my_files), read.csv)
my_data <- Map(function(x, nm), { x$filename <- nm; x; },
               my_data, my_files)
# or much more succinctly
my_data <- Map(transform, my_data, filename = my_files)

第一步 (lapply) 将生成帧列表(请参阅https://stackoverflow.com/a/24376207/3358227)。虽然不是必需的,但我还用文件名命名了列表。这有时可能很方便,但通常包含在第二步中,将文件名添加到数据中。

第二步使用Maplapply 是一个列表/向量,Map一个或多个,请参阅https://stackoverflow.com/a/54485425/3358272 了解“展开”对Map 的调用的演练。第二步只是为每个帧添加一列,并返回该帧。

之后,my_data 将是一个命名列表,其中文件名既是列表元素的名称,又是每一帧的 $filename 列中的名称。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-03-09
    • 2016-12-23
    • 2012-09-04
    • 1970-01-01
    • 2010-09-24
    • 1970-01-01
    • 2021-07-16
    相关资源
    最近更新 更多