基于DataFrame中col1空值提取col2值失败,返回integer(0)问题排查
问题原因及解决方法
问题出在你取列的方式上:data['col1']返回的是1列的数据框,而非向量。is.na()作用在数据框上会生成一个和原数据框行数相同的逻辑矩阵,用这个矩阵筛选行时,无法正确定位到col1为空的那一行,最终导致筛选结果为空,返回integer(0)。
两种修正方法
方法1:用$符号取列向量
这是R中提取数据框列最常用的方式,直接返回向量:
x <- data[is.na(data$col1), 'col2'] print(x)
方法2:用双括号[[]]取列向量
双括号同样可以直接提取列对应的向量,效果和$一致:
x <- data[is.na(data[['col1']]), 'col2'] print(x)
本质上,只要把data['col1']换成能返回向量的取列方式,is.na()就能生成正确的逻辑向量来筛选行,从而得到你想要的col2值1440。
内容的提问来源于stack exchange,提问作者user1960836
相关产品推荐
相关产品推荐

