我有以下字符列表:
$`1`
[1] "TEMP_sim_zone1_cell_1_5_"
$`5`
[1] "TEMP_sim_zone1_cell_1_5_"
$`6826`
[1] "TEMP_sim_zone338_cell_6826_"
$`9888`
[1] "TEMP_sim_zone615_cell_9888_9890_9895"
$`9890`
[1] "TEMP_sim_zone615_cell_9888_9890_9895"
$`9892`
[1] "TEMP_sim_zone614_cell_9892"
$`9895`
[1] "TEMP_sim_zone615_cell_9888_9890_9895"
由此,我想创建这个矩阵(nrow = 7,ncol = 2):
1 1
5 2
6826 1
9888 1
9890 2
9892 1
9895 3
例如,应在文件“TEMP_sim_zone615_cell_9888_9890_9895”中读取单元9888,9890和9895。 9888位于位置1,9890位于位置2,9895位于位置3(此信息应取自文件名中单元格的位置)。
有人可以帮助我吗?
答案 0 :(得分:2)
以下是如何获取命名向量:
sapply(names(l), function(x) {
s <- sub('.+_cell_', '', l[[x]])
ids <- strsplit(s, '_', fixed = TRUE)[[1]]
which(ids == x)
})
# 1 5 6826 9888 9890 9892 9895
# 1 2 1 1 2 1 3
答案 1 :(得分:2)
这是另一种方式,temp
是你的清单(由@ Thomas的建议简化)
temp2 <- mapply(match, names(temp), strsplit(gsub("^.*\\cell_", "", temp), "_"))
temp2 <- cbind(as.numeric(names(temp2)), as.numeric(temp2))
# [,1] [,2]
# [1,] 1 1
# [2,] 5 2
# [3,] 6826 1
# [4,] 9888 1
# [5,] 9890 2
# [6,] 9892 1
# [7,] 9895 3