在管道中使用 t.test() 进行 t 检验时,句点在 "data=." 中的作用是什么?

When doing a t-test with t.test() while piping, what does the period do in "data=."?

我有一个数据框,其中有 2 列是年龄和性别。我正在进行统计分析以确定两组性别的年龄分布是否存在差异。我知道如果我不调用 data= 它会给出一个错误(我相信这是 dplyr 库的问题)。我想知道 . 参数中的 . 是做什么的。它是否将它定向到我们在 %>% 之前使用的数据框?

age_sex.htest <- d %>%
   t.test(formula=age~sex, data=.)

正如@markus 指出的那样,d 被传递给 t.test 中的 data 参数。这是 data(sleep) 使用 ..

的输出
library(dplyr)
data(sleep)

sleep %>% t.test(formula=extra ~ group, data = .)

# Output
    Welch Two Sample t-test

data:  extra by group
t = -1.8608, df = 17.776, p-value = 0.07939
alternative hypothesis: true difference in means between group 1 and group 2 is not equal to 0
95 percent confidence interval:
 -3.3654832  0.2054832
sample estimates:
mean in group 1 mean in group 2 
           0.75            2.33 

如果你把sleep直接放入t.testdata,那么你会得到相同的结果,因为t.test是运行宁相同的数据。

t.test(formula=extra ~ group, data = sleep)

# Output

    Welch Two Sample t-test

data:  extra by group
t = -1.8608, df = 17.776, p-value = 0.07939
alternative hypothesis: true difference in means between group 1 and group 2 is not equal to 0
95 percent confidence interval:
 -3.3654832  0.2054832
sample estimates:
mean in group 1 mean in group 2 
           0.75            2.33 

在这种情况下,. 并不是那么有用,尽管有些人在风格上更喜欢这种方式(我通常喜欢)。

但是,当您想要 运行 对数据帧的轻微改动进行分析时,它非常有用。因此,对于睡眠数据集,例如,如果您想从两个组中删除 ID == 10,那么您可以删除带有 filter 的那些,然后是 运行 和 t.test

sleep %>%
  filter(ID != 10) %>%
  t.test(formula = extra ~ group, data = .)

因此,我们传递了 sleep 数据集的更改版本,其中删除了 ID 为 10 的行。所以现在,我们将在输出中看到一个变化:

    Welch Two Sample t-test

data:  extra by group
t = -1.7259, df = 15.754, p-value = 0.1039
alternative hypothesis: true difference in means between group 1 and group 2 is not equal to 0
95 percent confidence interval:
 -3.5677509  0.3677509
sample estimates:
mean in group 1 mean in group 2 
      0.6111111       2.2111111