如何在 R 中使用 map 遍历 object 以创建一系列 gt 表
How to iterate through an object with map in R to create a series of gt tables
我正在尝试创建一系列 table 并希望使用 map
函数循环访问因子变量。我能够做到这一点,但是当我想使用迭代变量作为每个 table 的标题时,我 运行 遇到了麻烦。索引和迭代是我仍在思考的事情,所以如果有人能指出我在下面的代码中做错了什么,我将不胜感激:
library(gt)
Area1 <- as.factor(c(0,0, 0.50659782, "NS"))
Area2 <- c(NA, NA, 0.507, NA)
Pond <- c('MGF', '101W', 5, 5)
Ponds <-data.frame(Area1, Area2, Pond)
Ponds %>%
split(.$Pond) %>%
map(~gt(.) %>%
tab_header(
title = map(., names(.)
)
)
)
这是我希望为每个具有适当标题的池塘输出的内容
我猜你的代码的问题在于你试图映射两个需要 map2
的对象。祝你好运!
Ponds_split <- Ponds %>%
split(.$Pond)
map2(
Ponds_split,
names(Ponds_split),
~gt(.) %>%
tab_header(
title = .y
)
)
这是一个基本方法:
by(data = Ponds,
INDICES = Ponds$Pond,
FUN = function (x) {
obj = gt(x)
tab_header(data = obj, title = x$Pond[1L])
})
这是 data.table 的一种巧妙方法,我们实际上 return gt
对象,以便稍后调用它们。
library(data.table)
dt = as.data.table(Ponds)
res = dt[,
{gt_obj = tab_header(data = gt(.SD),
title = .BY[[1L]])
print(gt_obj) ##makes it display in viewer
list(list(gt_obj))
}
, by = Pond]
res
## Pond V1
## <char> <list>
## 1: MGF <gt_tbl[16]>
## 2: 101W <gt_tbl[16]>
## 3: 5 <gt_tbl[16]>
res[Pond == "MGF", V1]
唯一的区别是,在这种 [data.table] 方法中,table 中没有 Pond 列。
我正在尝试创建一系列 table 并希望使用 map
函数循环访问因子变量。我能够做到这一点,但是当我想使用迭代变量作为每个 table 的标题时,我 运行 遇到了麻烦。索引和迭代是我仍在思考的事情,所以如果有人能指出我在下面的代码中做错了什么,我将不胜感激:
library(gt)
Area1 <- as.factor(c(0,0, 0.50659782, "NS"))
Area2 <- c(NA, NA, 0.507, NA)
Pond <- c('MGF', '101W', 5, 5)
Ponds <-data.frame(Area1, Area2, Pond)
Ponds %>%
split(.$Pond) %>%
map(~gt(.) %>%
tab_header(
title = map(., names(.)
)
)
)
这是我希望为每个具有适当标题的池塘输出的内容
我猜你的代码的问题在于你试图映射两个需要 map2
的对象。祝你好运!
Ponds_split <- Ponds %>%
split(.$Pond)
map2(
Ponds_split,
names(Ponds_split),
~gt(.) %>%
tab_header(
title = .y
)
)
这是一个基本方法:
by(data = Ponds,
INDICES = Ponds$Pond,
FUN = function (x) {
obj = gt(x)
tab_header(data = obj, title = x$Pond[1L])
})
这是 data.table 的一种巧妙方法,我们实际上 return gt
对象,以便稍后调用它们。
library(data.table)
dt = as.data.table(Ponds)
res = dt[,
{gt_obj = tab_header(data = gt(.SD),
title = .BY[[1L]])
print(gt_obj) ##makes it display in viewer
list(list(gt_obj))
}
, by = Pond]
res
## Pond V1
## <char> <list>
## 1: MGF <gt_tbl[16]>
## 2: 101W <gt_tbl[16]>
## 3: 5 <gt_tbl[16]>
res[Pond == "MGF", V1]
唯一的区别是,在这种 [data.table] 方法中,table 中没有 Pond 列。