如何在循环中使用 gt::text_transform
How to use gt::text_transform inside a loop
我想在 for 循环内的单元格内容下添加值(以遍历我的 table。考虑这个例子:
library(dplyr)
library(gt)
df <- as.data.frame(matrix(NA, nrow = 3, ncol = 3))
tab <- gt(df)
for (i in 1:3) {
tab <- tab %>%
text_transform(locations = cells_body(
columns = all_of(i),
rows = all_of(i)
), fn = function(x) {
paste0(x, "<br>", i)
})
}
tab
现在标签看起来像这样:
这很奇怪,但是在对角线上添加的元素是相同的。我希望它们分别为 1、2 和 3。
我们可以通过避免 for 循环来达到预期的结果:
tab <- gt(df)
tab <- tab %>%
text_transform(locations = cells_body(
columns = all_of(1),
rows = all_of(1)
), fn = function(x) {
paste0(x, "<br>", 1)
})
tab <- tab %>%
text_transform(locations = cells_body(
columns = all_of(2),
rows = all_of(2)
), fn = function(x) {
paste0(x, "<br>", 2)
})
tab <- tab %>%
text_transform(locations = cells_body(
columns = all_of(3),
rows = all_of(3)
), fn = function(x) {
paste0(x, "<br>", 3)
})
tab
但这只适用于非常小的 tables,就像这里的这个。有人知道我哪里搞砸了吗?
非常感谢 Limey 我使用 lapply:
解决了这个问题
library(dplyr)
library(gt)
df <- as.data.frame(matrix(NA, nrow = 3, ncol = 3))
tab <- gt(df)
f <- function(i) {
tab <<- tab %>%
text_transform(locations = cells_body(
columns = all_of(i),
rows = all_of(i)
), fn = function(x) {
paste0(x, "<br>", i)
})
}
tab
lapply(1:3, f)
tab
我想在 for 循环内的单元格内容下添加值(以遍历我的 table。考虑这个例子:
library(dplyr)
library(gt)
df <- as.data.frame(matrix(NA, nrow = 3, ncol = 3))
tab <- gt(df)
for (i in 1:3) {
tab <- tab %>%
text_transform(locations = cells_body(
columns = all_of(i),
rows = all_of(i)
), fn = function(x) {
paste0(x, "<br>", i)
})
}
tab
现在标签看起来像这样:
这很奇怪,但是在对角线上添加的元素是相同的。我希望它们分别为 1、2 和 3。
我们可以通过避免 for 循环来达到预期的结果:
tab <- gt(df)
tab <- tab %>%
text_transform(locations = cells_body(
columns = all_of(1),
rows = all_of(1)
), fn = function(x) {
paste0(x, "<br>", 1)
})
tab <- tab %>%
text_transform(locations = cells_body(
columns = all_of(2),
rows = all_of(2)
), fn = function(x) {
paste0(x, "<br>", 2)
})
tab <- tab %>%
text_transform(locations = cells_body(
columns = all_of(3),
rows = all_of(3)
), fn = function(x) {
paste0(x, "<br>", 3)
})
tab
但这只适用于非常小的 tables,就像这里的这个。有人知道我哪里搞砸了吗?
非常感谢 Limey 我使用 lapply:
解决了这个问题library(dplyr)
library(gt)
df <- as.data.frame(matrix(NA, nrow = 3, ncol = 3))
tab <- gt(df)
f <- function(i) {
tab <<- tab %>%
text_transform(locations = cells_body(
columns = all_of(i),
rows = all_of(i)
), fn = function(x) {
paste0(x, "<br>", i)
})
}
tab
lapply(1:3, f)
tab