检查列表中的列是否为 na
Check if a column is na in a list
我正在尝试检查列表中的任何数据框是否有包含所有条目 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)
我正在尝试检查列表中的任何数据框是否有包含所有条目 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)