【问题标题】:Is there a way to take a list of different files and group them together in a separate list based off identical characters on R?有没有办法根据 R 上的相同字符获取不同文件的列表并将它们组合在一个单独的列表中?
【发布时间】:2021-07-09 18:55:56
【问题描述】:

有没有办法获取不同文件的列表,并根据 R 上的相同字符将它们组合在一个单独的列表中?

所以列出如下列表:

list_of_files <- c("file1.tif", "file1.png", "file1.rds", "file2.tif", "file2.png")

然后以一个新变量结束,该变量在调用时返回如下内容:

new_variable[1]
>>> "file1.tif" "file1.png" "file1.rds"

new_variable[2]
>>> "file2.tif" "file2.png"

再一次,我希望能够在特定位置按相同的字符对所有文件进行分组。我使用的显然不只是称为 file1 和 file2,但为简单起见,这些是我创建的文件名。而且它也不仅仅是 2 个不同的文件,所以一个简单的 if 语句可能不会做。

【问题讨论】:

    标签: r list


    【解决方案1】:

    使用split根据文件不带扩展名变成list

    out <- split(list_of_files, tools::file_path_sans_ext(list_of_files))
    out
    $file1
    [1] "file1.tif" "file1.png" "file1.rds"
    
    $file2
    [1] "file2.tif" "file2.png"
    

    并使用$[[ 提取list 元素

    out$file1
    out[[1]]
    

    【讨论】:

    • 有没有办法让我不必输入 file1 或 file2 并让它自己自动完成?我正在处理的文件有很多不同的文件,这就是为什么
    • @NathanDrake 代码split 自动执行此操作并将其存储在list 中。我展示了从list 中提取的方法。您不需要提取列表元素,因为您可以循环使用 listlapply 等。
    • 我将如何使用 lapply?我不知道该怎么做。
    • @NathanDrake 这里的最终目标是什么。 split 完全按照您在问题中提出的要求,即将它们组合在 list
    • 获取所有这些文件并用它们制作一个
      ,其中包含要在相应 div 中下载的每个文件的链接。所以,我正在使用的文件都是日期专有的。在特定日期内的那些,我想组合在一起(文件名包含日期),以便当 div 打印出来时,它会显示该特定日期的所有文件并显示指向它们的链接。我目前已经制作了一个可以做到这一点的函数,我现在需要的只是一种让每个日期出现 div 的方法......如果这有意义的话。
    猜你喜欢
    • 2019-12-16
    • 2019-02-28
    • 1970-01-01
    • 2020-01-20
    • 2018-04-21
    • 2021-12-16
    • 2022-12-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多