如何在 R 中创建具有连续文件名和数字的向量?
How to create a vector with sequential filenames and numbers in R?
你能帮帮我吗?
我有一个 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的名称上,以此类推。
这个结果是怎么做到的?谢谢!
您可以简单地对 files.rand 进行排序,但这会导致字母数字顺序出错,这与数字顺序不同。一个简单的解决方法是在您的数字中添加前导零(将“%02i”替换为“%03i”以获得 100 个随机数等):
files.rand <- paste(files, sprintf("%02i", rand), sep = "_")
files.rand <- sort(files.rand)
如果您希望每个文件都按照您已经对文件和序列进行排序的顺序粘贴每个序列,那么我认为您只想在 [=12= 上使用 lapply
] 函数和 unlist
就像这样:
files.rand <- lapply(files,function(x) paste(x,rand,sep = "_"))
files.rand <- unlist(files.rand)
您可以使用 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"
你能帮帮我吗?
我有一个 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的名称上,以此类推。
这个结果是怎么做到的?谢谢!
您可以简单地对 files.rand 进行排序,但这会导致字母数字顺序出错,这与数字顺序不同。一个简单的解决方法是在您的数字中添加前导零(将“%02i”替换为“%03i”以获得 100 个随机数等):
files.rand <- paste(files, sprintf("%02i", rand), sep = "_")
files.rand <- sort(files.rand)
如果您希望每个文件都按照您已经对文件和序列进行排序的顺序粘贴每个序列,那么我认为您只想在 [=12= 上使用 lapply
] 函数和 unlist
就像这样:
files.rand <- lapply(files,function(x) paste(x,rand,sep = "_"))
files.rand <- unlist(files.rand)
您可以使用 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"