如何将R向量中的值注入列表对象,而不考虑列表结构,包括嵌套级别和列表中使用的名称?

xurqigkl  于 5个月前  发布在  其他
关注(0)|答案(1)|浏览(42)

假设我们有一个原始列表对象list_tmp,具有不同的嵌套级别,看起来像下面这样(在文章的底部是list_tmp的代码):

> list_tmp
$clinic
$clinic$trial
$clinic$trial$patient
     A B
[1,] 0 0
[2,] 0 0

$clinic$result
     C
[1,] 0
[2,] 0

$test
     D
[1,] 0
[2,] 0

字符串
如何将向量值以行-列的方向“注入”列表对象,而不考虑子列表名称或嵌套级别?填充发生直到耗尽向量元素的较早者,或直到到达列表的末尾。在完整的代码中,向量元素的数量将始终等于列表中“单元格”的数量。
例如,如果我们有向量vec <- (1,2,3,4,5,6,7,8),将这些向量值依次倒入list_tmp将导致以下结果:

> list_tmp
$clinic
$clinic$trial
$clinic$trial$patient
     A B
[1,] 1 3
[2,] 2 4

$clinic$result
     C
[1,] 5
[2,] 6

$test
     D
[1,] 7
[2,] 8


list_tmp的代码:

list_tmp <- list(
  clinic = list(
    trial = list(
      patient = matrix(0, nrow = 2, ncol = 2, dimnames = list(NULL, c("A", "B")))
    ),
    result = matrix(0, nrow = 2, ncol = 1, dimnames = list(NULL, c("C")))
  ),
  test = matrix(0, nrow = 2, ncol = 1, dimnames = list(NULL, c("D")))
)

yv5phkfx

yv5phkfx1#

使用relisting轻松完成:

a <- unlist(as.relistable(list_tmp))
a[seq_along(vec)] <- vec
unclass(relist(a))

$clinic
$clinic$trial
$clinic$trial$patient
     A B
[1,] 1 3
[2,] 2 4

$clinic$result
     C
[1,] 5
[2,] 6

$test
     D
[1,] 7
[2,] 8

个字符

相关问题