我希望能够找到仅具有全零值的列,并用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]

推荐答案

一种可能的解决方案(请注意,mutate_all已被取代):

library(dplyr)

DF %>% 
  mutate(across(y1:y4, ~ {if (all(.x == 0, na.rm = T)) NA_real_ else .x}))

#> # A tibble: 5 × 4
#>      y1    y2    y3    y4
#>   <dbl> <dbl> <dbl> <dbl>
#> 1    NA  0        0    NA
#> 2    NA  0.75     1    NA
#> 3    NA  1.5      2    NA
#> 4    NA  3.5      4    NA
#> 5    NA  6        3    NA

R相关问答推荐

确定邻国

仅在ggplot的每个方面绘制最丰富的物种

在R中使用GG Plot时如何 suppress 等值线图中的彩色条

混淆矩阵,其中每列和等于1

为什么st_join(ob1,ob2,left = True)返回具有比ob1更多功能的sf对象?

R箱形图gplot 2 4组但6个参数

对于变量的每个值,仅 Select 包含列表中所有值的值.R

plotly hover文本/工具提示在shiny 中不起作用

在使用bslb和bootstrap5时,有没有办法更改特定dt行的 colored颜色 ?

您是否可以折叠R中的重复行,同时保留基于所选列的值?

`lazy_dt`不支持`dplyr/across`?

如何在PackageStatus()中列出&q;不可用的包&q;?

悬崖三角洲超大型群数计算导致整数溢出

如何根据R中其他变量的类别汇总值?

如何在PDF格式的kableExtra表格中显示管道字符?

如何在PrePlot()中将多个元素设置为斜体

SHILINY中DT列的条件着色

按两个因素将观测值分组后计算单独的百分比

如何移动点以使它们的打印不重叠

如果极点中存在部分匹配,则替换整个字符串