R将列表的每个`data.Frame`打印到单独的表中,标题为`data.Frame`名称 [英] R printing each `data.frame` of a list into separate Tables with caption as `data.frame` name

查看:0
本文介绍了R将列表的每个`data.Frame`打印到单独的表中,标题为`data.Frame`名称的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

要将列表的每个data.frame打印到单独的表中,标题为data.frame名称。我尝试的代码如下所示。它会生成表格,但标题错误。

library(tidyverse)
library(kableExtra)
#> 
#> Attaching package: 'kableExtra'
#> The following object is masked from 'package:dplyr':
#> 
#>     group_rows

df1 <- data.frame(X = 1:3)
df2 <- data.frame(Y = 5:6)

ls1 <-
  list(df1, df2) %>% 
  set_names(c("df1", "df2"))

ls1
#> $df1
#>   X
#> 1 1
#> 2 2
#> 3 3
#> 
#> $df2
#>   Y
#> 1 5
#> 2 6

str(ls1)
#> List of 2
#>  $ df1:'data.frame': 3 obs. of  1 variable:
#>   ..$ X: int [1:3] 1 2 3
#>  $ df2:'data.frame': 2 obs. of  1 variable:
#>   ..$ Y: int [1:2] 5 6
names(ls1)
#> [1] "df1" "df2"

imap(
    .x = ls1
  , .f = ~ {
    kbl(
       x       = .x
     , format  = "markdown"
     , caption = names(.x)
    )
  }
)
#> $df1
#> 
#> 
#> Table: X
#> 
#> |  X|
#> |--:|
#> |  1|
#> |  2|
#> |  3|
#> 
#> $df2
#> 
#> 
#> Table: Y
#> 
#> |  Y|
#> |--:|
#> |  5|
#> |  6|

推荐答案

应为.y。如果是命名的list/vector,则名称默认在.y中,值在.x中,这类似于在map2中传递两个参数。如果没有名称,则.y将返回list

的序列索引
purrr::imap(
  .x = ls1
  , .f = ~ {
    kbl(
      x       = .x
      , format  = "markdown"
      , caption =.y
    )
  }
)  

-输出

$df1


Table: df1

|  X|
|--:|
|  1|
|  2|
|  3|

$df2


Table: df2

|  Y|
|--:|
|  5|
|  6|

这篇关于R将列表的每个`data.Frame`打印到单独的表中,标题为`data.Frame`名称的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆