我们希望在 R 中重命名数据框中的列,但是这些列可能会丢失,这会引发错误:
my_df <- data.frame(a = c(1,2,3), b = c(4,5,6))
my_df %>% dplyr::rename(aa = a, bb = b, cc = c)
Error: Can't rename columns that don't exist.
x Column `c` doesn't exist.
Run Code Online (Sandbox Code Playgroud)
我们想要的输出是这样的,如果原始列不存在,它将创建一个具有 NA 值的新列:
> my_df
aa bb c
1 1 4 NA
2 2 5 NA
3 3 6 NA
Run Code Online (Sandbox Code Playgroud)
一个可能的解决方案:
library(tidyverse)
my_df <- data.frame(a = c(1,2,3), b = c(4,5,6))
cols <- c(a = NA_real_, b = NA_real_, c = NA_real_)
my_df %>% add_column(!!!cols[!names(cols) %in% names(.)]) %>%
rename(aa = a, bb = b, cc = c)
#> aa bb cc
#> 1 1 4 NA
#> 2 2 5 NA
#> 3 3 6 NA
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
890 次 |
| 最近记录: |