繁体   English   中英

Error :: is.na()应用于'NULL'类型的非(列表或向量)

[英]Error:: is.na() applied to non-(list or vector) of type 'NULL'

当我使用下面的代码然后它给我所需的输出

subset(ndata,!is.na(ndata$LHeart_Failure))

而当我以其他形式完成上述相同的代码时

out <- "LHeart_Failure"
subset(ndata,!is.na(ndata$out))

它给了我错误:

logical(0)
Warning message:
In is.na(ndata$out) :
is.na() applied to non-(list or vector) of type 'NULL'

这里ndata是.csv文件中的数据。 LHeart_Failure是列的名称,我希望通过该名称找到该特定列中没有“NA”的所有行(即LHeart_Failure中没有NA的所有行)。

当我尝试在不存在的数据帧列上调用is.na()时,我收到此错误消息,例如

> ndata <- data.frame(v1=c(1:3), v2=c("one", "two", "three"))
> subset(ndata, !is.na(ndata$out))
[1] v1 v2
<0 rows> (or 0-length row.names)
Warning message:
In is.na(ndata$out) :
  is.na() applied to non-(list or vector) of type 'NULL'

所以,你应该确保列out第一个尝试使用它来子集之前确实存在。

我个人会避免使用subset ,而只是明确地对数据帧进行subset化。 从你写的东西,它看起来像你想从数据帧保留行ndata其中out没有NA值。 在这种情况下,您可以尝试:

ndata[!is.na(ndata$out), ]

这个错误是因为数据结构ndata不包含任何叫列out 使用命令:

out <- "LHeart_Failure"

你只创建一个变量out与字符串内容"LHeart_Failure" 如果要将out用作LHeart_Failure列的等效LHeart_Failure ,则必须调用:

out <- ndata$LHeart_Failure

其次是

found_idxs <- which[!is.na(out)]

ndata$out假定数据ndata存在列out 如果你想使用您保存在串out作为列名来过滤数据,我建议你这样做:

out <- "LHeart_Failure"
ndata[!is.na(ndata[,out]),]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM