【问题标题】:helper function in RR中的辅助函数
【发布时间】:2020-03-09 11:34:04
【问题描述】:

对于某些特定变量,无论它们的位置如何,我都尝试将 NA 替换为 0。我写了下面的代码,但出现了一些错误..

data1[, starts_with("Year_")][is.na(data1[, starts_with("Year_")])] <- 0

我收到以下错误

Error: No tidyselect variables were registered 

Call `rlang::last_error()` to see a backtrace

我已经安装了dplyrtidyrtidyselect,但我仍然收到这个错误,谁能帮我解决这个问题。

【问题讨论】:

  • 如果您添加minimal reproducible example,您可以让其他人更容易找到和测试您的问题的答案。这样你就可以帮助别人帮助你!
  • 如果您使用的是基础 R,请尝试 startsWith("Year_", names(data1))。 tidyhelper starts_with() 通常用于管道序列中的 select() 函数%&gt;%

标签: r helper tidyselect


【解决方案1】:

由于您没有提供 MRE,我不得不自己创建它:

df<- data.frame(id = 1:5,
                Prefix_1 = c(1, 2, 3, NA, 5),
                Prefix_2 = c(NA, 1, 2, 3, NA))

解决方法,如何将NA替换为虚构的数据:

df[, grepl("^Prefix_", names(df))][is.na(df[, grepl("^Prefix_", names(df))])] <- 0

df 现在是:

 id Prefix_1 Prefix_2
1  1        1        0
2  2        2        1
3  3        3        2
4  4        0        3
5  5        5        0

请注意,仅仅因为我们可以NAs 替换为0 并不意味着我们应该。我想你有一个很好的理由为什么 NAs 应该是 0 ;)

编辑:

dplyr 的解决方案:

df<- data.frame(id = 1:5,
                Prefix_1 = c(1, 2, 3, NA, 5),
                Prefix_2 = c(NA, 1, 2, 3, NA))


library(dplyr)   
df %>% 
  mutate_at(vars(matches("^Prefix")), coalesce,  0)

或者,使用dplyrtidyr::starts_with

library(dplyr)   
library(tidyr)
df %>% 
  mutate_at(vars(starts_with("Prefix")), coalesce,  0)

【讨论】:

  • 嗨达里奥,我用过 df[, grepl("^Prefix_", names(df))][is.na(df[, grepl("^Prefix_", names(df))] )]
猜你喜欢
  • 2019-11-05
  • 2020-06-09
  • 1970-01-01
  • 2020-10-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-08-04
  • 1970-01-01
相关资源
最近更新 更多