什么是 . (点)表示在 ~replace_na(., 0)

What does the . (dot) mean in ~replace_na(., 0)

R 和编码新手。

我有一个包含 +- 1000 个观测值和 +- 100 个变量的数据框。我想在选定列(var1、var2、var5、var6)中用 0(零)替换 NA 值。

在阅读了一些关于这个主题的其他帖子后,我找到了这段代码,它成功地替换了 NA。

df <- df %>% mutate_at(vars(var1, var2, var5, var6), ~replace_na(., 0))

现在我理解了大部分代码,期待 . (点)在:~replace_na(., 0))

什么是. (点)在此函数中的确切含义?

这个one-sided公式叫做lambda-function。

使用内部变量..x是编写简单匿名函数的一种更快的方法。我个人更喜欢 .x,因为 . 已经被 dplyr 用作管道的 left-hand 变量,这可能会引起混淆。

在此上下文中(在 mutate_at 内),~replace_na(., 0))~replace_na(.x, 0))function(x) replace_na(x, 0) 相同。

你可以试试这个,结果是一样的:

df <- df %>% mutate_at(vars(var1, var2, var5, var6), function(x) replace_na(x, 0))

此外,请注意 mutate_atdplyr 1.0 一样已弃用。您可能希望将新语法与 across 函数一起使用:

df <- df %>% mutate(across(c(var1, var2, var5, var6), ~replace_na(.x, 0)))