我想知道当第 n 行变量的值取决于第 n-1 行和/或第 n-2 行变量的值时,迭代数据帧行的最佳方法。理想情况下,我想以“tidyverse”的方式来做到这一点,也许使用 purrr::pmap()。
例如,假设我有这个数据框:
library(dplyr)
x <- tibble(t = c(1:10),
a = c(seq(100, 140, 10), rep(NA_real_, 5)),
b = c(runif(5), rep(NA_real_, 5)),
c = c(runif(5), rep(NA_real_, 5)))
x
#> # A tibble: 10 x 4
#> t a b c
#> <int> <dbl> <dbl> <dbl>
#> 1 1 100 0.750 0.900
#> 2 2 110 0.898 0.657
#> 3 3 120 0.731 0.000137
#> 4 4 130 0.208 0.696
#> 5 5 140 0.670 0.882 …Run Code Online (Sandbox Code Playgroud) 我喜欢flextableR 的包。我用它来为 Shiny 应用程序创建表。有时,表格占据浏览器宽度的一半,这在某些浏览器上可能是相当狭窄的空间。我想限制flextable不超过其容器宽度,即使这意味着在单词中插入换行符。
这是一些示例flextable代码。一旦将查看器窗口缩小到超过一定宽度,就flextable不会进一步缩小 - 相反,表格将水平滚动。
library(magrittr)
mtcars %>%
tibble::rownames_to_column("car") %>%
flextable::flextable() %>%
flextable::autofit()
Run Code Online (Sandbox Code Playgroud)
该reactable包通过在必要时在单词中插入换行符来处理此问题,以便保持在最大表格宽度内。这通常是一个丑陋的解决方案,但有时是首选。
mtcars %>%
tibble::rownames_to_column("car") %>%
reactable::reactable(defaultColDef = reactable::colDef(minWidth = 1))
Run Code Online (Sandbox Code Playgroud)
如果有必要不超过容器宽度,有没有办法flextable在单词中插入换行符?