R 将列表的每个“data.frame”打印到单独的表中,标题为“data.frame”名称
R printing each `data.frame` of a list into separate Tables with caption as `data.frame` name
想要将列表的每个 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
将 return 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|
想要将列表的每个 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
将 return 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|