r - 在 for 循环中使用 group_rows 创建表
问题描述
这是我的示例数据的代码:
library(tidyverse)
library(kableExtra)
library(knitr)
df1 <- tibble(
var1A= rnorm(1:10) +1,
var1B= rnorm(1:10) +1,
var2A= rnorm(1:10) +2,
var2B= rnorm(1:10) +2,
var3A= rnorm(1:10) +3,
var3B= rnorm(1:10) +3)
df2 <- tibble(
var1A= rnorm(1:10) +1,
var1B= rnorm(1:10) +1,
var2A= rnorm(1:10) +2,
var2B= rnorm(1:10) +2,
var3A= rnorm(1:10) +3,
var3B= rnorm(1:10) +3)
df3 <- tibble(
var1A= rnorm(1:10) +1,
var1B= rnorm(1:10) +1,
var2A= rnorm(1:10) +2,
var2B= rnorm(1:10) +2,
var3A= rnorm(1:10) +3,
var3B= rnorm(1:10) +3)
我有 3 个带有 2 个变量(A 和 B)的数据框,每个 df 都有 3 个阈值(1、2、3)。现在我想为每个 df 和每个阈值 -> 执行一个 t.Test t.test(varA, varB)
。
有了这个代码,我得到了我想要的:所有 dfs 和所有阈值的 t.tests 表。
threshold <- seq(1,3)
list_dfs = c('df1','df2','df3')
table.t.test <-map(list_dfs,
function(df_name){
x <- get(df_name)
lapply(threshold, function(i){
t.test(x %>%
pull(paste0("var",i,"A")),
x %>%
pull(paste0("var",i,"B")))
}) %>%
map_df(broom::tidy) %>%
add_column(.before = 'estimate',
df = df_name,
threshold = thresholds)
}) %>%
do.call(rbind, .)%>%
select(-estimate, -parameter, -conf.low, -conf.high, -method, -alternative)
在最后一步中,我想按表中的数据框对行进行分组:
table.t.test%>%
kable()%>%
kable_styling()%>%
group_rows(list_dfs[1],1,3)%>%
group_rows(list_dfs[2],4,6)%>%
group_rows(list_dfs[3],7,9)
我担心的是我想用for循环自动对行进行分组:
for (i in seq_along(list_dfs)){
table.t.test%>%
kable()%>%
kable_styling()%>%
group_rows(list_dfs[i],i*3-2,i*3)
}
但是我的for循环不起作用。有人可以帮助我在 for 循环中实现 group_rows() 函数吗?
解决方案
index =
如果我理解正确,我认为您可以跳过 for 循环而只使用group_rows
. 像这样的东西(下)。此外,在您的示例代码中,我认为您在添加新列时翻转了 threshold = thresholds 。
names <- sapply(list_dfs, "[")
frequencies <- rle(table.t.test$df)$lengths
table.t.test[-1] %>% # [-1] b/c redundant info if you are grouping rows
kable()%>%
kable_styling()%>%
group_rows(index = setNames(frequencies, names))
推荐阅读
- javascript - Unity WebGL 覆盖兼容性检查回调
- postgresql - Postgres DB 卡在恢复模式
- firebase - Firestore 中的访问日期
- android - 如何检查设备在主线程上是否有“真正的”互联网连接?
- python-3.5 - 使用 docx 模板库的 Python docx 图像渲染
- node.js - 从另一台计算机向 Express.js api 发布请求
- java - Byte Buddy - 如何使字段自类型?
- octave - 八度更改 UIControl 位置
- python - 通过保留第一个元素从 python 列表中删除以下重复元素
- javascript - 画布透明度创建永久残像