R中的波浪号和点

Rob*_*hrs 1 r function dataframe dplyr mutate

我知道这更像是一个普遍的基本问题。但对我来说仍然有点困惑。“问题”是~.in R。它们只是随处可见,我不知道它们在每种情况下的确切含义。例如,有此代码,我想将每个 -1 或 -9 编码为NA

df_clean = dplyr::mutate_all(df, ~ifelse(. %in% c(-1, -9), NA, .))
Run Code Online (Sandbox Code Playgroud)

所以df在这种情况下是一个data.frame有几列的。其中一些包含许多NAs. 但是为什么~在前面ifelse呢?第一个.有助于迭代每一行?

对困惑感到抱歉。但也许有人可以用一些简单的词来解释这一点;)

Ron*_*hah 7

.这里指的值在列而~是一个式样式语法来表示的功能。它是一种编码风格。

这也可以使用匿名函数表示,如基 R

dplyr::mutate_all(df, function(x) ifelse(x %in% c(-1, -9), NA, x))
Run Code Online (Sandbox Code Playgroud)

这与lapply在基数 R 中使用相同:

lapply(df, function(x) ifelse(x %in% c(-1, -9), NA, x))
Run Code Online (Sandbox Code Playgroud)