r - 检查列表中的列是否为 na

标签 r na

我正在尝试检查列表中的任何数据框是否有一列包含所有条目 NA。

我试过这个 lapply(df,function(x)all(is.na(df)))并且可以很好地检查所有列。我如何检查以下列表中的第一列是否为 NA。

我试过 lapply(df[,1],function(x)all(is.na(df[,1])))但这不是正确的做法

[[1]]
             ID Mas5.SignalIntensity DetectionCalls     P.value
1     1007_s_at           3242.90209              P 0.000218932
2       1053_at            377.81481              P 0.017000453
3        117_at            114.88743              A 0.066864977
4        121_at           8739.03257              P 0.000218932


[[2]]
             ID Mas5.SignalIntensity DetectionCalls     P.value
1            NA            134.40764              P 0.000561751
2            NA            453.34875              P 0.002227740
3            NA            706.34996              A 0.066864977
4            NA            102.51459              A 0.089405078

[[3]]
             ID Mas5.SignalIntensity DetectionCalls     P.value
1     1007_s_at          7015.297075              P 0.000218932
2       1053_at           677.459859              P 0.011447358
3        117_at           180.568654              A 0.267462560
4        121_at          1693.426847              P 0.006531992
5     1255_g_at           181.221325              A 0.339557900

最佳答案

尝试

 sapply(lst, function(x) any(colSums(!is.na(x))==0))
 #[1]  TRUE FALSE  TRUE

更新

如果要检查特定列,例如第 2 栏
sapply(lst, function(x) all(is.na(x[,2])))
#[1] FALSE FALSE  TRUE

或者
sapply(lst, function(x) sum(!is.na(x[,2]))==0)
#[1] FALSE FALSE  TRUE

数据
 df <- data.frame(col1= NA, col2=1:5, col3=c(1:3,NA, NA))
 df1 <- data.frame(col1=1:5, col2=6:10, col3=11:15)
 df2 <- data.frame(col1=c(NA,2), col2= NA, col3=c(2,4))
 lst <- list(df, df1, df2)

关于r - 检查列表中的列是否为 na,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31071932/

相关文章:

r - 快速读取非常大的表作为数据框

r - 计算滚动两个骰子的优雅解决方案?

R Postgres 和快捷命令?

r - R中xtabs和聚合之间的na.action不一致

R:如何在案例中对变量进行求和,同时将NA计数为零

r - ggplot2 为几个 stat_functions 添加图例

r - 使用函数内的逻辑条件访问全局向量分量

r - 在 R 中通过 ID 进行最后的观察

r - 当要填充的条目数可能不同时,如何仅填充一行中的特定值

R:在数据框中:将列中的第一个非 NA 值设置为 NA