【问题标题】:Object not found when creating an R function创建 R 函数时找不到对象
【发布时间】:2021-07-04 03:20:09
【问题描述】:

数据框我正在尝试基于一些有效的代码创建一个函数,以便我可以进一步复制它。

nap_analyse <- nap_analyse %>%
  mutate(is.beekper = as.logical(replace(About_yourself.Beekeeper, !is.na(About_yourself.Beekeeper), TRUE))) %>%
  mutate(is.beekper = replace_na(is.beekper, FALSE)) 

上面的代码似乎运行良好,因此我正在尝试创建以下函数:

new_nap_var <- function(dataframe, new_var, var_to_replace) {
  dataframe <- dataframe %>%
    mutate(new_var = as.logical(replace(var_to_replace, !is.na(var_to_replace), TRUE))) %>%
    mutate(new_var = replace_na(new_var, FALSE))
}

但是,当我运行 new_nap_var(nap_analyse, is.beekeeper, About_yourself.Beekeeper) 时,我得到了错误:

错误:mutate() 输入 new_var 有问题。 未找到 x 对象“About_yourself.Beekeeper” ℹ 输入new_varas.logical(replace(var_to_replace, !is.na(var_to_replace), TRUE))。 运行rlang::last_error() 看看哪里出错了。

我怎样才能做到这一点?非常感谢!

【问题讨论】:

  • 在函数中的变量名周围使用{{..}}。 (例如 - {{var_to_replace}}
  • 谢谢 Ronak,但是,我得到了和上面一样的错误。
  • 如果您创建一个小的可重现示例以及预期的输出,这将更容易提供帮助。阅读how to give a reproducible example

标签: r function replace dplyr


【解决方案1】:

你可以试试这个功能:

new_nap_var <- function(dataframe, new_var, var_to_replace) {
  dataframe %>%
    mutate({{new_var}} := as.logical(replace({{var_to_replace}}, 
                                     !is.na({{var_to_replace}}), TRUE))) %>%
    mutate({{new_var}} := replace_na({{new_var}}, FALSE))
}

new_nap_var(nap_analyse, is.beekeeper, About_yourself.Beekeeper)

【讨论】:

  • 不需要(...) dataframe &lt;- dataframe %&gt;% (...) 吗?我尝试了你的建议并且函数运行没有错误,但是当我运行 nap_analyse$is.beekeeper 我得到 &gt; nap_analyse$is.beekeeper NULL Warning message: Unknown or uninitialised column: is.beekeeper.
  • 不要在函数内部赋值。做nap_analyse &lt;- new_nap_var(nap_analyse, is.beekeeper, About_yourself.Beekeeper)
猜你喜欢
  • 2018-08-29
  • 1970-01-01
  • 1970-01-01
  • 2019-01-18
  • 2015-08-04
  • 1970-01-01
  • 2023-04-04
  • 1970-01-01
  • 2020-11-09
相关资源
最近更新 更多