假设我进行了以下拆分:
x <- 1:5
K <- 2
y <- 5
split(sample(x), sample(1:K, y, replace = TRUE))
$`1`
[1] 3
$`2`
[1] 5 1 2 4
有没有办法将以上内容放入表格
[, 1] [, 2]
[1, ] 3 5
[2, ] 1
[3, ] 2
[4, ] 4
答案 0 :(得分:5)
您可以使用length<-
用NA填充那些空元素,这样对于sapply
的结果将是完美的。
a <- split(sample(x), sample(1:K, y, replace = TRUE))
a
# $`1`
# [1] 2 3
#
# $`2`
# [1] 5 1 4
sapply(a, "length<-", max(lengths(a)))
# 1 2
# [1,] 2 5
# [2,] 3 1
# [3,] NA 4
答案 1 :(得分:0)
可以尝试基于tidyverse
的方法,因为它将为直接使用dplyr
链提供灵活性。逻辑是stack
在data.frame中列出,然后使用tidyr::spread
更改宽格式的数据:
library(tidyverse)
set.seed(1)
split(sample(x), sample(1:K, y, replace = TRUE)) %>%
stack() %>%
group_by(ind) %>%
mutate(rn = row_number()) %>%
spread(ind, values, fill = NA_integer_) %>%
select(-rn) %>% as.data.frame()
# 1 2
# 1 1 2
# 2 NA 5
# 3 NA 4
# 4 NA 3