我希望能够找到仅具有全零值的列,并用Nas替换这些列. 在这里找到了部分解决方案:Replace all zero columns with NA,但我的数据框也包含全部为Nas的列,此操作失败.下面是一个例子:
DF <- tibble(
y1 = c(0.0, 0.0, 0.0, 0.0, 0.0),
y2 = c(0.0, 0.75, 1.5, 3.5, 6.0),
y3 = c(0.0, 1.0, 2.0, 4.0, 3.0),
y4 = c(NA, NA, NA, NA, NA))
DF %>% mutate_all(~case_when(all(. == 0, na.rm = TRUE) ~ NA_real_, TRUE ~ .))
因此,我们的目标是将y1更改为所有Nas,并保持其他所有内容不变.如果df正好是y1:y3,则此代码可以工作.包括NA列将引发一个错误.请注意,我更改了原始解决方案,将na.rm包括在all()函数中,但这并不能解决问题.返回的错误为
Caused by error in `` names(message) <- `*vtmp*` ``:
! 'names' attribute [1] must be the same length as the vector [0]