【发布时间】:2020-11-10 12:11:22
【问题描述】:
我想在新页面上打印data.frames 的list。 for-loop 工作正常,但需要长代码。尝试使用 map 函数,但无法获得所需的输出。无法将\newpage 命令与map 功能一起使用。它还提供了一些额外的输出,例如[[1]] NULL [[2]] NULL。任何提示,请。
mt1 <-
matrix(
data = runif(n = 200, min = 101, max = 999)
, nrow = 20
, ncol = 10
, byrow = TRUE
, dimnames = list(LETTERS[1:20], paste0("V", 1:10))
)
df1 <- data.frame(Name = row.names(mt1), mt1)
dfs <-
unname(
split.default(
df1[, -1], as.integer(gl(ncol(df1)-1, 5, ncol(df1) - 1))
)
)
library(kableExtra)
library(tidyverse)
for(i in 1:length(dfs)){
print(
kable(
cbind(df1[1], dfs[i])
, format = 'latex'
, row.names = FALSE
) %>%
row_spec(row = c(0), bold = TRUE, italic = TRUE, align = "l")
)
if(i < length(dfs)) {
cat("\n\n\\newpage\n")
}
}
map(
dfs
, function(x)
print(
kable(
cbind(df1[1], x)
, format = 'latex'
, row.names = FALSE
) %>%
row_spec(row = c(0), bold = TRUE, italic = TRUE, align = "l")
#cat("\n\n\\newpage\n")
)
#if(i < length(x))
#cat("\n\n\\newpage\n")
)
【问题讨论】:
-
当您说“新页面”时,您正在创建什么样的文档?您是在将 .Rmd 编织成 html 吗?
-
是
.Rnw文件。 -
我很难理解如何使用
for编写代码“更长”或者不如map版本(在这种情况下)。您是否只是为了 [某事] 而避免命令式编程而采用函数式方法...? -
我和@CL 有同样的困难。
for循环在这里似乎是完全合法的。我真的不明白必须使用purrr::map()的意义。
标签: r for-loop tidyverse knitr purrr