【问题标题】:How to create a vector with sequential filenames and numbers in R?如何在 R 中创建具有顺序文件名和数字的向量?
【发布时间】:2021-02-09 18:45:10
【问题描述】:

你能帮帮我吗?

我有一个list 的matrices 读入R。每个矩阵被随机化 10 次,然后为每次随机化计算一个度量。我想将结果存储在一个有组织的数据框中,该数据框反映了随机化的顺序。

如何使用文件名 + 数字的序列构建vector,以便我知道哪个结果指的是哪个随机化?稍后,我会将此向量添加到 data frame 以标记结果。

这是我的代码到目前为止的样子:

假设我有一个向量,其中包含读入 R 的文件名,它看起来像这样:

files <- paste("file", seq(1:3), sep = "")

每个文件被随机化 10 次,然后为每个随机化计算一个指标:

rand <- seq(1:10)

现在我想创建一个包含一系列文件名和随机化的向量:

files.rand <- paste(files, rand, sep = "_")

此代码生成的最终序列不反映分析随机化的实际序列。

我需要序列看起来像这样:

"file1_1"  "file1_2"  "file1_3"  "file1_4"  "file1_5"
"file1_6"  "file1_7"  "file1_8"  "file1_9"  "file1_10"
"file2_1" "file2_2" "file2_3" "file2_4" ...

顺序号应该添加到file1的名称中,然后它们应该添加到file2的名称中,依此类推。

怎样才能达到这个结果?谢谢!

【问题讨论】:

    标签: r list dataframe vector paste


    【解决方案1】:

    如果您希望每个文件按照您已经对文件和序列进行排序的顺序粘贴每个序列,那么我认为您只想在paste 函数和unlist 上使用lapply是这样的:

    files.rand <- lapply(files,function(x) paste(x,rand,sep = "_"))
    files.rand <- unlist(files.rand)
    

    【讨论】:

      【解决方案2】:

      你可以使用outer:

      c(t(outer(files, rand, paste, sep = '_')))
      
      #[1] "file1_1"  "file1_2"  "file1_3"  "file1_4"  "file1_5"  "file1_6" 
      #[7] "file1_7"  "file1_8"  "file1_9"  "file1_10" "file2_1"  "file2_2" 
      #[13] "file2_3"  "file2_4"  "file2_5"  "file2_6"  "file2_7"  "file2_8" 
      #[19] "file2_9"  "file2_10" "file3_1"  "file3_2"  "file3_3"  "file3_4" 
      #[25] "file3_5"  "file3_6"  "file3_7"  "file3_8"  "file3_9"  "file3_10"
      

      【讨论】:

        【解决方案3】:

        您可以简单地对 files.rand 进行排序,但这会导致字母数字顺序与数字顺序不同。一个简单的解决方法是在您的数字中添加前导零(将“%02i”替换为“%03i”以获得 100 个随机数等):

        files.rand <- paste(files, sprintf("%02i", rand), sep = "_")
        files.rand <- sort(files.rand)
        

        【讨论】:

        • 谢谢!尽管如此,您的代码只生成了 10 种文件名 + 数字的组合。总共应该有 30 个(3 个文件名 * 10 个数字)。请问如何解决这个问题?
        猜你喜欢
        • 2023-04-07
        • 2022-12-03
        • 1970-01-01
        • 2018-02-01
        • 2011-01-24
        • 1970-01-01
        • 2014-02-02
        • 2013-03-14
        相关资源
        最近更新 更多