此代码块的R中的“含义”是什么?

时间:2019-11-26 10:56:23

标签: r list if-statement tidyverse na

我知道那里有大量资源。我很高兴收到一些好的指示,因为对于初学者而言,要真正知道什么是好的资源是非常困难的。我的问题是,以下代码中.~的实际含义是什么? 我知道他们将所有-199都编码为NA。但是,为什么这种复杂的外观语法呢?

mutate_all(df, list(~ifelse(. %in% c(-1, 99), NA, .)

因此,data.frame df有几列。在所有的NA中,编码为-1或99。 我认为dplyr也具有na_if函数。而且在这里使用起来更容易吗?

2 个答案:

答案 0 :(得分:1)

他们正在使用mutate_all函数来更改/更改您将拥有df的基数R中表df[] <- lapply(df, function(x) ifelse(x %in% c(-1, 99), NA, x))中的所有列

na_if可以使用-请看一下:https://dplyr.tidyverse.org/reference/na_if.html

答案 1 :(得分:1)

.指的是与@sindri_baldur和@Data Science共享的,与x的基本R版本中的lapply相等的当前列值。

lapply(df, function(x) ifelse(x %in% c(-1, 99), NA, x))

~,而是一种quosure样式的lambda表示法,主要是样式偏好。您可以跳过该操作,并使用匿名功能也可以使用与lapply相同的语法。

dplyr::mutate_all(df, function(x) ifelse(x %in% c(-1, 99), NA, x))

您也可以放开list并像使用它一样。

dplyr::mutate_all(df, ~ifelse(. %in% c(-1, 99), NA, .))