我的函数将从用户处获取数据和列名

在我的函数中,我需要判断该列中缺少的值,并用"missed"替换它们

myfun <- function(data, column){
  library(tidyverse)
  data <- as.tibble(data)
  data %>%
    mutate(across(.cols = {{column}}, .fns = as.character)) %>%
    replace_na(list({{columns}} = "missed"))
  
}


new_df <- airquality %>%
                myfun(Ozone)
       

我以前使用过{{}},我在传递像上面的空气质量示例这样的列名时没有问题.现在,在我的实际功能中,我需要替换na s.上述格式不适用于replace\u na()

你知道怎么解决这个问题吗?

推荐答案

我认为你需要在mutate()以内使用replace_na().如果使用与将列转换为字符相同的策略,这似乎可以解决问题:

myfun <- function(data, column){
  library(tidyverse)
  data <- as_tibble(data)
  data %>%
    mutate(across(.cols = {{column}}, .fns = ~ replace_na(as.character(.x), "missed")))
  
}


new_df <- airquality %>%
  myfun(Ozone)

输出:

> head(new_df)
# A tibble: 6 × 6
  Ozone  Solar.R  Wind  Temp Month   Day
  <chr>    <int> <dbl> <int> <int> <int>
1 41         190   7.4    67     5     1
2 36         118   8      72     5     2
3 12         149  12.6    74     5     3
4 18         313  11.5    62     5     4
5 missed      NA  14.3    56     5     5
6 28          NA  14.9    66     5     6

R相关问答推荐

按自定义数字模式对变量名称排序

R中的枢轴/转置

为什么在ggplot2中添加geom_text这么慢?

如何在格子中添加双曲曲线

将数据集中的值增加到当前包含的最大值

在R中无法读入具有Readxl和lApply的数据集

IMF IFS数据以R表示

如何使用列表中多个列表中的第一条记录创建数据框

从所有项的 struct 相同的两级列表中,将该第二级中的所有同名项绑定在一起

计算满足R中条件的连续列

如何删除最后一个可操作对象

如何在R中通过多个变量创建交叉表?

查找所有站点的最小值

从多层嵌套列表构建Tibble?

如何使用For-R循环在向量中找到一系列数字

远离理论值的伽马密度曲线下面积的近似

我如何使用循环来编写冗余的Rmarkdown脚本?

`-`是否也用于数据帧,有时使用引用调用?

无法将条件case_when()应用于使用!!创建的新变量Mutations

访问数据帧中未定义的列时出现R错误