R中的na_if()函数最近开始出错

xmjla07d  于 2023-02-20  发布在  其他
关注(0)|答案(1)|浏览(148)

我使用下面的代码来摆脱我的 Dataframe 中的空单元格。

df %>%
 # recode empty strings "" by NAs
 na_if("") %>%
 # remove NAs
 na.omit`

它一直工作正常,直到最近,但现在我得到以下错误
na_if()中的错误:!无法将y转换为与x类型匹配的类型。请运行rlang::last_error()以查看出现错误的位置。<tbl_df>. Run rlang::last_error() to see where the error occurred.
rlang::last_error()〈错误类型转换〉na_if()中的错误:!无法转换y以匹配x的类型。<tbl_df>.
我使用的是r版本4.1.3和dplyr包1.1.0
注意:我在使用时也遇到同样的错误

df %>% mutate_all(~na_if(.,"")) %>%
  na.om`it
jm81lzqq

jm81lzqq1#

library(tidyverse)
set.seed(2023)
df <- data.frame(values=sample(c(letters[1:3],""),30,T))

no_na_df <- df %>%
  na_if("") %>%
  na.omit()
map_dbl(list(df,no_na_df),nrow) # print number of rows of wach data set

Output:
[1] 30 22

如果我可以建议一个更简单的基础R版本(也可以用在mtate的上下文中:

replace(df$values,which(df$values==""),NA)

df %>% mutate(values_no_na=replace(values,which(values==""),NA)) %>% view()

相关问题