什么是 . (点)表示在 ~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_at
与 dplyr 1.0
一样已弃用。您可能希望将新语法与 across
函数一起使用:
df <- df %>% mutate(across(c(var1, var2, var5, var6), ~replace_na(.x, 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_at
与 dplyr 1.0
一样已弃用。您可能希望将新语法与 across
函数一起使用:
df <- df %>% mutate(across(c(var1, var2, var5, var6), ~replace_na(.x, 0)))