我需要创建一个空版本的数据集,以清除所有值,同时保留列名,更重要的是,保留变量的类.

下面是一些玩具数据,三个不同的变量具有三个不同的属性

df <- data.frame(x = rnorm(5),
                 y = factor(letters[5:1]),
                 z = c(1:2, NA, 4:5))

glimpse(df)

Rows: 5
Columns: 3
$ x <dbl> -0.24530142, -0.05332072, 0.12387791, -0.26148671, -0.53779766
$ y <fct> e, d, c, b, a
$ z <int> 1, 2, NA, 4, 5

现在,当我try 在dplyr中使用mutateacross来清除这些值时…

df %>%
  mutate(across(everything(),
                ~ NA)) -> blankDF

blankDF

   x  y  z
1 NA NA NA
2 NA NA NA
3 NA NA NA
4 NA NA NA
5 NA NA NA

看起来不错,but

glimpse(blankDF)

# Rows: 5
# Columns: 3
# $ x <lgl> NA, NA, NA, NA, NA
# $ y <lgl> NA, NA, NA, NA, NA
# $ z <lgl> NA, NA, NA, NA, NA

它剥离了所有变量的属性,使它们变得合乎逻辑.

Can someone give me advice on how to get the blank dataset while retaining the attributes?

一个整齐的解决方案会很好,但任何解决方案都很受欢迎.

推荐答案

您可以使用na_if将列.x替换为NA,从而替换列中的所有值across,如下所示:

library(dplyr)

glimpse(df)
#> Rows: 5
#> Columns: 3
#> $ x <dbl> -0.2006935, 1.3461746, -0.1433400, -0.8983886, -0.3190282
#> $ y <fct> e, d, c, b, a
#> $ z <int> 1, 2, NA, 4, 5

df_output = df %>% 
  mutate(across(everything(), ~ na_if(.x, .x)))

glimpse(df_output)
#> Rows: 5
#> Columns: 3
#> $ x <dbl> NA, NA, NA, NA, NA
#> $ y <fct> NA, NA, NA, NA, NA
#> $ z <int> NA, NA, NA, NA, NA

创建于2023-07-07,共reprex v2.0.2

R相关问答推荐

保存包含循环和ifelse的函数的输出

pickerInput用于显示一条或多条geom_hline,这些线在图中具有不同 colored颜色

在不安装软件包的情况下测试更新

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

错误:非常长的R行中出现意外符号

从BRM预测价值

如何在R库GoogleDrive中完全删除预先授权的Google帐户?

使用Scale_*_MANUAL时在图例中保留未使用的系数级别

如何将Which()函数用于管道%>;%

在数据帧列表上绘制GGPUP

手动指定从相同数据创建的叠加图的 colored颜色

R中时间间隔的大向量与参考时间间隔的相交

变异以按组从其他列创建具有最大和最小值的新列

每行不同列上的行求和

有没有办法更改ggplot2中第二个y轴的比例限制?

如何将字符类对象中的数据转换为R中的字符串

如何在矩阵图中按标准对数据进行分组以绘制矩阵

从单个html段落中提取键-值对

带有Bootswatch Cerulean主题的shiny 仪表板中的浏览&按钮可见性问题

将Geojson保存为R中的shapefile