【问题标题】:R List of the prefix of a files listR 文件列表前缀列表
【发布时间】:2014-02-05 09:44:39
【问题描述】:

我正在尝试列出目录中文件的前缀列表。我有大约 45 个具有相同前缀的文件,例如:

AH#01, AH#02... AH#45

然后

BH#01, BH#02...

我正在尝试列出 AH、BH、...(它们是 .sp 文件)。

我被这个列表困住了。然后有了这个列表,我想为一个特定的文件名应用一个 R 脚本,为AH,然后是BH,等等。

【问题讨论】:

  • 感谢您的建议。我试过了,结果是 AH#1,AH#2,...BH#1,BH#2...但我只想要 AH,BH,...这很有帮助...此外,做您知道如何将 R 脚本应用于这些前缀的列表。例如,我想将脚本应用于名为“nomfic”的文件,其中“nomfic”是前一个列表的每个前缀(如 AH,然后是 BH,...)提前致谢。

标签: r list prefix


【解决方案1】:

这应该可行:

sub('(.*)#.*','\\1',list.files(your_directory_path))

例子:

sub('(.*)#.*','\\1',c('AB#1','AH#45'))
[1] "AB" "AH"

要将您的脚本应用于结果(尽管我们通常使用文件名),您可以这样做:

nomfic<- sub('(.*)#.*','\\1',list.files(your_directory_path))
lapply(nonfic, function(x){your_script})

【讨论】:

    【解决方案2】:

    我可能误解了你的问题,但这是我的建议:

    prefix_letters <- c("AH", "BH")
    prefix_numbers <- gsub(" ", "0", format(1:45, digits=2))
    m <- outer(prefix_letters, prefix_numbers, function(x, y) paste(x, y, sep="#"))
    l <- data.frame(t(m))
    names(l) <- prefix_letters
    head(l)
    
         AH    BH
    1 AH#01 BH#01
    2 AH#02 BH#02
    3 AH#03 BH#03
    4 AH#04 BH#04
    5 AH#05 BH#05
    6 AH#06 BH#06
    

    【讨论】:

      【解决方案3】:

      您可以使用sub函数将字符串中不相关的部分替换为空字符串:

      vec <- c("AH#01", "AH#02", "AH#45", "BH#01", "BH#02")
      
      sub("#.*" , "", vec)
      # [1] "AH" "AH" "AH" "BH" "BH"
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-12-14
        • 1970-01-01
        • 2023-02-04
        • 2013-03-14
        相关资源
        最近更新 更多