r - R T.test 映射函数中的多个阈值
问题描述
我想对多个阈值和多个数据帧执行 t.tests。这是我的示例代码,阈值为 1、2 和 3:
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)
不,我想为所有数据帧的变量 A 和 B 运行 t.test。
此代码适用于第一个阈值 1:
list_dfs = c('df1','df2','df3')
map(mget(list_dfs),
function(x)
{t.test(x%>%pull(paste0("var",1,"A")), x%>%pull(paste0("var",1,"B")))}
)%>%
map_df(tidy)%>% add_column(.before = 'estimate',df = list_dfs)
现在我得到了我想要的输出:(阈值 1 的所有数据帧的 t.tests 表)
# A tibble: 3 x 11
df estimate estimate1 estimate2 statistic p.value parameter conf.low conf.high method alternative
<chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <chr> <chr>
1 df1 -0.371 0.534 0.906 -0.874 0.395 16.0 -1.27 0.529 Welch T~ two.sided
2 df2 0.500 1.49 0.985 1.01 0.326 17.7 -0.542 1.54 Welch T~ two.sided
3 df3 -0.363 1.13 1.49 -0.952 0.354 18.0 -1.16 0.438 Welch T~ two.sided
但现在我想为所有 3 个阈值自动运行 t.test。如何将阈值放入 map_function,以便获得 3 个新的 t.test 表?(每个阈值 1 个表格)
解决方案
您可以遍历函数内的阈值(在第一张地图中)并在其中进行整理,然后您可以添加其他变量来指示df
和threshold
像这样的东西怎么样:
list_dfs = c('df1','df2','df3')
thresholds = c(1, 2, 3)
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, .)
推荐阅读
- java - 在 wicket 中调用 javascript 并将 Wicket 中的值设置为参数
- plugins - 求硕士项目插件架构框架的建议
- css - 如何摆脱在移动视图中单击的元素周围单击时出现的蓝色框?
- python - 使用 python 进行边际似然优化
- python - 将列表中的数据拆分到自己的列
- google-cloud-platform - Cloud Data Fusion 定价 - 开发与执行
- php - PHP用回声修复未定义的错误?但不起作用
- javascript - 使用 Javascript/jQuery 从 CDATA 渲染 HTML
- python - 使用 Dask 从单个固定宽度文件中获取列并放入新 CSV 文件的最快方法
- c# - 代码重构以删除重复代码