首页 > 解决方案 > 添加空列以获得一定数量的列到现有数据框

问题描述

我有一个可变数量 F 的数据框,F 可以从 1 变为 X

df1 <- data.frame(F1=c(1,5,NA,9),F2=c(2,5,"a",NA),F3=c(1,NA,"o",NA))
df1
   F1   F2   F3
 1  1    2    1
 2  5    5 <NA>
 3 NA    a    o
 4  9 <NA> <NA>

但我需要我的数据框有一定数量的列,比如说 30。如果 X 小于 30,那么我需要添加所需的列数(具有 NA 值)以形成 30 列。

> df1
  F1   F2   F3  F4......F30
1  1    2    1 <NA>.....<NA>   
2  5    5 <NA> <NA>.....<NA>  
3 NA    a    o <NA>.....<NA>  
4  9 <NA> <NA> <NA>.....<NA>  

谢谢!

标签: r

解决方案


我们可以在数据集上使用setdiff并将names它们分配给NA

df1[setdiff(paste0("F", 1:30), names(df1))] <- NA

-输出

> df1
  F1   F2   F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30
1  1    2    1 NA NA NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA
2  5    5 <NA> NA NA NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA
3 NA    a    o NA NA NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA
4  9 <NA> <NA> NA NA NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA

推荐阅读