向data.frame递归添加列,其中值对应于列表中的向量
我有一个向量列表,它的值在1到100之间向data.frame递归添加列,其中值对应于列表中的向量,r,R,我有一个向量列表,它的值在1到100之间 [[1]] [[1]][[1]] [1] "a" [[1]][[2]] [1] 41 5 53 55 56 [[2]] [[2]][[1]] [1] "b" [[2]][[2]] [1] 41 1 57 53 48 等等 我怎样才能得到下面的data.frame no 1 2 1 NA b 41 a b 5 a NA 53
[[1]]
[[1]][[1]]
[1] "a"
[[1]][[2]]
[1] 41 5 53 55 56
[[2]]
[[2]][[1]]
[1] "b"
[[2]][[2]]
[1] 41 1 57 53 48
等等
我怎样才能得到下面的data.frame
no 1 2
1 NA b
41 a b
5 a NA
53 a NA
55 a NA
56 a NA
48 NA b
57 NA b
53 NA b
然后从那里填写缺失的行,并根据列“否”排序,其中列号从1到100?
例如
等等。
一直到第100排 对于第一部分,请尝试以下操作:
x <- list(list("a",c(41,5,53,55,56)),list("b",c(41,1,57,53,48)))
xl <- lapply(x,function(y) `names<-`(as.data.frame(y),c("chr","no")))
xm <- merge(xl[[1]],xl[[2]],by="no",all=T)
xm
no chr.x chr.y
1 1 <NA> b
2 5 a <NA>
3 41 a b
4 48 <NA> b
5 53 a b
6 55 a <NA>
7 56 a <NA>
8 57 <NA> b
对于第一部分,请尝试以下方法:
x <- list(list("a",c(41,5,53,55,56)),list("b",c(41,1,57,53,48)))
xl <- lapply(x,function(y) `names<-`(as.data.frame(y),c("chr","no")))
xm <- merge(xl[[1]],xl[[2]],by="no",all=T)
xm
no chr.x chr.y
1 1 <NA> b
2 5 a <NA>
3 41 a b
4 48 <NA> b
5 53 a b
6 55 a <NA>
7 56 a <NA>
8 57 <NA> b
下面是一种使用
lappy
的方法:
数据:
dat <- list(list("a", c(41, 5, 53, 55, 56)), list("b", c(41, 1, 57, 53, 48)))
dat以下是一种使用lappy
的方法:
数据:
dat <- list(list("a", c(41, 5, 53, 55, 56)), list("b", c(41, 1, 57, 53, 48)))
dat嗨,james,我得出了与你相同的结论,但不是只有一个小的向量列表,例如a和b,我有一个很长的列表,并希望递归地将它们相加。嗨,詹姆斯,我得出了和你一样的结论,但不是只有一个小的向量列表,比如a和b,我有一个很长的列表,我想递归地把它们加在一起。我想斯文已经到了最佳状态。
lev <- 1:100 # the unique numbers
vec <- rep(NA, length(lev)) # a vector full of NAs
data.frame(no = lev,
setNames(lapply(dat,
function(x) "[<-"(vec, lev %in% x[[2]], x[[1]])),
seq_along(dat)), check.names = FALSE)
no 1 2
1 1 <NA> b
2 2 <NA> <NA>
3 3 <NA> <NA>
4 4 <NA> <NA>
5 5 a <NA>
6 6 <NA> <NA>
7 7 <NA> <NA>
8 8 <NA> <NA>
9 9 <NA> <NA>
10 10 <NA> <NA>