我是R的新手,刚开始使用list。 我有一个不同长度的列表,我想将其转换为数据框。 我的列表看起来像这样:
List of A:
$ reference: chr [1:20000] "13000" "5000" "23234" ...
$ name_1 : chr [1:9000] "5000" "14523" ...
$ name_2 : chr [1:800] "13000" "23234" ...
我想建立一个类似这样的数据框:
reference name_1 name_2
13000 NA 13000
5000 5000 NA
23234 NA 23234
非常感谢你的帮助!我尝试用NAs填充列的其余部分,因此它们的长度与""相同。但它仍然没有按照我想要的方式组织它!
答案 0 :(得分:0)
这样的东西?
A <- list()
A$reference <- c("13000","5000","23234")
A$name_1 <- c("5000","14523")
A$name_2 <- c("13000","23234")
B <- data.frame(reference = A$reference,
name1 = ifelse(A$reference %in% A$name_1,A$reference,NA),
name2 = ifelse(A$reference %in% A$name_2,A$reference,NA))
# reference name1 name2
# 1 13000 <NA> 13000
# 2 5000 5000 <NA>
# 3 23234 <NA> 23234
答案 1 :(得分:0)
如果name_1
和name_2
的所有值都在ref
中,那么您可以执行以下操作:
mapply(function(x,y){is.na(df$ref)<-!x%in%y;df$ref},df["ref"],df)
ref <NA> <NA>
[1,] 1 1 NA
[2,] 2 NA 2
[3,] 3 3 NA
[4,] 4 NA 4
[5,] 5 5 NA
[6,] 6 NA 6
[7,] 7 7 NA
[8,] 8 NA 8
[9,] 9 9 NA
[10,] 10 NA 10
[11,] 11 NA NA
[12,] 12 NA NA
[13,] 13 NA NA
[14,] 14 NA NA
[15,] 15 NA NA
DATA
df=list(ref=1:15,name1=c(1,3,5,7,9),name2=1:5*2)
df
$ref
[1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
$name1
[1] 1 3 5 7 9
$name2
[1] 2 4 6 8 10