Рассмотрите список смешанных классов, например, что возвращается с boxplot
. Я хочу конкатенировать каждый элемент списка, сортировать стек каждой пары элементов по горизонтали.Списки конкатенации по горизонтали
(я нажал все «подобные вопросы» и искал, и я не в курсе базовой функции, чтобы сделать это, modifyList
быть похожи, но не совсем то, что я хочу. Я также быстро просмотрел пакет rlist, но ничего не ударил . мне как подобные же this question/answer аналогична, но работает только для векторов)
f <- function(x) boxplot(mpg ~ vs, data = x, plot = FALSE)
(bp1 <- f(mtcars[mtcars$vs == 0, ]))
# $stats
# [,1]
# [1,] 10.40
# [2,] 14.70
# [3,] 15.65
# [4,] 19.20
# [5,] 21.00
#
# $n
# [1] 18
#
# $conf
# [,1]
# [1,] 13.97416
# [2,] 17.32584
#
# $out
# [1] 26
#
# $group
# [1] 1
#
# $names
# [1] "0"
(bp2 <- f(mtcars[mtcars$vs == 1, ]))
# $stats
# [,1]
# [1,] 17.8
# [2,] 21.4
# [3,] 22.8
# [4,] 30.4
# [5,] 33.9
#
# $n
# [1] 14
#
# $conf
# [,1]
# [1,] 18.99955
# [2,] 26.60045
#
# $out
# numeric(0)
#
# $group
# numeric(0)
#
# $names
# [1] "1"
идея состоит в том, чтобы объединить два списка выше, в то, что можно было бы получить то, просто сделать следующее:
(bp <- f(mtcars))
# $stats
# [,1] [,2]
# [1,] 10.40 17.8
# [2,] 14.70 21.4
# [3,] 15.65 22.8
# [4,] 19.20 30.4
# [5,] 21.00 33.9
#
# $n
# [1] 18 14
#
# $conf
# [,1] [,2]
# [1,] 13.97416 18.99955
# [2,] 17.32584 26.60045
#
# $out
# [1] 26
#
# $group
# [1] 1
#
# $names
# [1] "0" "1"
Для 'mtcars' например, по крайней мере, вы могли бы просто используйте 'tmp <- lapply (1: length (bp1), function (x) cbind (bp1 [[x]], bp2 [[x]])); имена (tmp) <- names (bp1) '. Однако это не супер-робаст. Сглаживание с помощью 'c (list, recursive = TRUE)' и восстановление будет работать для более сложных структур, но будет намного больше работать. [Этот вопрос] (https://xkcd.com/1205/), действительно. – alistaire