【问题标题】:Whats the "meaning" in R of this code-chunk?这个代码块的 R 中的“含义”是什么?
【发布时间】:2019-11-26 10:56:23
【问题描述】:

我知道那里有大量的资源。而且我会非常高兴收到一些好的迹象,因为初学者很难真正知道什么是好的资源。我的问题是以下代码中.~ 的实际意义是什么。 我知道他们将所有-1s 和99s 编码为NA。但是为什么这种看起来很复杂的语法呢?

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

所以data.frame df 有几列。 NA 的所有编码都是 -1 或 99。 我认为dplyr 也有一个na_if 功能。这不是更容易在这里使用吗?

【问题讨论】:

  • 这是来自dplyr 包的语法,大致转换为基本R,如下所示:df[] <- lapply(df, function(x) ifelse(x %in% c(-1, 99), NA, x))

标签: r list if-statement tidyverse na


【解决方案1】:

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

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, .))

【讨论】:

    【解决方案2】:

    他们正在使用 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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-09-09
      • 1970-01-01
      • 2020-10-02
      • 2016-06-19
      • 2017-04-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多