我正尝试将多个查询的结果拉到一个表中。所有结果都在一个列表列表中,通常作为统计评估中的单个数字。我还需要能够指定要将哪个列表结果制成表格。例如,列表集:
list1 <- list(1, 2, 3, 4)
names(list1) <- c("first", "second", "third", "fourth")
list2 <- list(10, 11, 12, 13)
names(list2) <- c("first", "second", "third", "fourth")
list3 <- list(100, 101, 102, 103)
names(list3) <- c("first", "second", "third", "fourth")
我可以从每个列表中单独获取结果:
library(magrittr)
row1 <- list1[c("second", "third")] %>%
rbind() %>%
unlist()
row2 <- list2[c("second", "third")] %>%
rbind() %>%
unlist()
row3 <- list3[c("second", "third")] %>%
rbind() %>%
unlist()
然后将它们添加到数据框中,然后命名每列,最后打印结果
library(kableExtra)
desired_table <- rbind(row1, row2, row3)
colnames(desired_table) <- c("second", "third")
kbl(desired_table)
在我看来,应该有一个更容易的方法,我希望有。
我怎样才能对一个包结果列表做到这一点呢?要么是对另一个包,要么是用一种我没有想到的方法?
2条答案
按热度按时间m1m5dgzv1#
和"$"一样,方括号是一个中缀运算符,它是一个伪装的函数调用。你甚至可以写
"["(list(0,1,2,3), 1)
,并期望得到0。sapply
函数创建连续调用,第一个调用是list(list1,list2,list3)[[1]][ c("second", "third") ]
,第二个调用是list(list1,list2,list3)[[2]][ c("second", "third") ]
,以此类推。在其背后,sapply
和lappy
只是使用隐式顺序整数迭代器伪装的for循环。下面是一个由两个标准R函数(
"["
和sapply
)组成的基本应用程序,它作为一个行程序来执行此操作:可能需要在这两列之间添加一点空格:
qhhrdooz2#
我们可以使用
purrr
包中的modify_depth
: