R 如何从列表中提取特定元素并返回向量
我的列表结构如下:R 如何从列表中提取特定元素并返回向量,r,R,我的列表结构如下: mylist <- list(list(list()), list(list()), list(list()), list(list()), list(structure(list(source = c("IDcode", "IDcode", "IDcode" ), db_id = c("id13653662", "id3396732", "id995182")), class = "data.frame", row.names = c(NA,
mylist <- list(list(list()),
list(list()), list(list()), list(list()),
list(structure(list(source = c("IDcode", "IDcode", "IDcode"
), db_id = c("id13653662", "id3396732", "id995182")), class = "data.frame", row.names = c(NA,
3L))), list(structure(list(source = c("IDcode", "IDcode"
), db_id = c("id1494969", "id869437")), class = "data.frame", row.names = 1:2)),
list(structure(list(source = c("IDcode", "IDcode"), db_id = c("id578674",
"id531006")), class = "data.frame", row.names = 1:2)), list(
structure(list(source = c("IDcode", "IDcode"), db_id = c("id578673",
"id531005")), class = "data.frame", row.names = 1:2)))
> mylist
[[1]]
[[1]][[1]]
list()
[[2]]
[[2]][[1]]
list()
[[3]]
[[3]][[1]]
list()
[[4]]
[[4]][[1]]
list()
[[5]]
[[5]][[1]]
source db_id
1 IDcode id13653662
2 IDcode id3396732
3 IDcode id995182
[[6]]
[[6]][[1]]
source db_id
1 IDcode id1494969
2 IDcode id869437
[[7]]
[[7]][[1]]
source db_id
1 IDcode id578674
2 IDcode id531006
[[8]]
[[8]][[1]]
source db_id
1 IDcode id578673
2 IDcode id531005
最好的方法是什么?因为我们在每个列表中都有一个列表,所以我们
将其取消列出一级,然后根据每个列表的长度返回粘贴的输出或NA
sapply(unlist(mylist, recursive = FALSE), function(x)
if(length(x)) paste0(x$db_id, collapse = ";") else NA)
#[1] NA NA NA
#[4] NA "id13653662;id3396732;id995182" "id1494969;id869437"
#[7] "id578674;id531006" "id578673;id531005"
因为我们在每个列表中都有一个列表,所以我们unlist
it一级并根据每个列表的长度返回粘贴的输出或NA
sapply(unlist(mylist, recursive = FALSE), function(x)
if(length(x)) paste0(x$db_id, collapse = ";") else NA)
#[1] NA NA NA
#[4] NA "id13653662;id3396732;id995182" "id1494969;id869437"
#[7] "id578674;id531006" "id578673;id531005"
你是说什么
rbind(mylist[[5]][[1]],mylist[[6]][[1]], mylist[[7]][[1]], mylist[[8]][[1]])
source db_id
1 IDcode id13653662
2 IDcode id3396732
3 IDcode id995182
4 IDcode id1494969
5 IDcode id869437
6 IDcode id578674
7 IDcode id531006
8 IDcode id578673
9 IDcode id531005
或
你是说什么
rbind(mylist[[5]][[1]],mylist[[6]][[1]], mylist[[7]][[1]], mylist[[8]][[1]])
source db_id
1 IDcode id13653662
2 IDcode id3396732
3 IDcode id995182
4 IDcode id1494969
5 IDcode id869437
6 IDcode id578674
7 IDcode id531006
8 IDcode id578673
9 IDcode id531005
或
vecvec
mySecFun(mylist1); mySecFun(mylist2)
vec <- vector()
for (i in 1:length(mylist)) {
for (j in 1:length(mylist[[i]])) {
if(length(mylist[[i]][[j]]) == 0){
vec[i] <- NA
}
else{
vec[i] <- paste0(mylist[[i]][[j]]$db_id,collapse = ";")
}
}
}