【问题标题】:"undefined columns selected" - when trying to remove na's from df's in list“选择了未定义的列” - 当试图从列表中的 df 中删除 na 时
【发布时间】:2013-02-11 01:00:24
【问题描述】:

我正在尝试复制此解决方案的成功:

remove columns with NAs from all dataframes in list

Remove columns from dataframe where some of values are NA

带有数据框列表:

m1<- structure(list(vPWMETRO = c(1520L, 1520L, 1520L, 1520L, 1520L), 
               vPWPUMA00 = c(500L, 900L, 1000L, 1100L, 1200L), 
               v100 = c(96.1666666666667, 71.4615384615385, 68.6363636363636, 22.5, 64.5), 
               v101 = c(5, 15, NA, NA, NA),
               v102 = c(NA_real_, NA_real_, NA_real_, NA_real_, NA_real_)),
          .Names = c("vPWMETRO", "vPWPUMA00", "v100", "v101", "v102"), 
          row.names = 26:30, class = "data.frame")

m2<- structure(list(vPWMETRO = c(6440L, 6440L, 6440L, NA, NA), 
               vPWPUMA00 = c(1300L,2100L, 2200L, NA, NA), 
               v100 = c(38.3921568627451, 35, 12.5, NA, NA), 
               v101 = c(NA, NA, NA, NA, NA), 
               v102 = c(38.3333333333333, 68, NA, NA, NA)), 
               .Names = c("vPWMETRO", "vPWPUMA00", "v100", "v101", "v102"), 
          row.names = c("39", "40", "41", "NA", "NA.1"), class = "data.frame")
#views structure
str(m1)
str(m2)

#creates list
snag<- list(v1520=m1, v6440=m2)
str(snag)
#attempts lapply solution
prob1<- lapply(snag, function(y) y[ ,!is.na(y)])

#2nd attempt, same result on just dataframe:
x5$v6440[ , apply(x5$v6440, 2, function(x) !(is.na(x)))]

以便在数据框中删除包含所有 NA 的列。因此结果应该是 2 个 df 的列表:

v1520:vPWPUMA00、v100、v101

v6440:vPWPUMA00、v100、v102

我看到示例问题的不同之处在于尺寸是 1x11,而我的尺寸是 5x5。我猜这会导致“未定义列”错误,但我不确定。

任何帮助或建议将不胜感激。

问候,

【问题讨论】:

    标签: r list lapply na


    【解决方案1】:

    我认为您的问题和答案并不完全正确。

    请参阅Remove columns from dataframe where ALL values are NA,这似乎是您想要的。

    然后你可以修改my answer

    lapply(snag, Filter, f = function(x){!all(is.na(x))})
    
    
    
    $v1520
       vPWMETRO vPWPUMA00     v100 v101
    26     1520       500 96.16667    5
    27     1520       900 71.46154   15
    28     1520      1000 68.63636   NA
    29     1520      1100 22.50000   NA
    30     1520      1200 64.50000   NA
    
    $v6440
         vPWMETRO vPWPUMA00     v100     v102
    39       6440      1300 38.39216 38.33333
    40       6440      2100 35.00000 68.00000
    41       6440      2200 12.50000       NA
    NA         NA        NA       NA       NA
    NA.1       NA        NA       NA       NA
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多