R !is.na删除具有na值的列(在任何行中)

R !is.na删除具有na值的列(在任何行中),r,R,我有一个17(r)乘20(c)的矩阵,其中所有数据都是数字和NA。我正在尝试删除任何行中值为NA的所有列。这是20列中的11列。我已经搜索了一个小时,尝试了几种方法,但都没有找到正确的方法 my.data [ ,!is.na(my.data[ ,1:20])] 对我来说,这是最有意义的,但给'脚本太长'的错误 一个基本方法是 mydata[, !is.na(colSums(mydata))] 一个基本方法是 mydata[, !is.na(colSums(mydata))] 打败我!

我有一个17(r)乘20(c)的矩阵,其中所有数据都是数字和NA。我正在尝试删除任何行中值为NA的所有列。这是20列中的11列。我已经搜索了一个小时,尝试了几种方法,但都没有找到正确的方法

my.data [ ,!is.na(my.data[ ,1:20])]   

对我来说,这是最有意义的,但给'脚本太长'的错误

一个基本方法是

mydata[, !is.na(colSums(mydata))]

一个基本方法是

mydata[, !is.na(colSums(mydata))]

打败我!我想建议
mydata[,colSums(is.na(mydata))==0]
非常感谢。所以逻辑是在一列中求和,因为任何NA值都会将和变成NA…the!is.na将过滤掉它们。@RandyMarsh正确!话虽如此。。是我最初的方法不适合我试图做的事情,还是我没有看到明显的错误?再次感谢Ric SIt给你这个错误,因为根据文档,
is.na
接受“原子向量、列表、成对列表和NULL”,因此没有矩阵或数据帧比我更重要!我想建议
mydata[,colSums(is.na(mydata))==0]
非常感谢。所以逻辑是在一列中求和,因为任何NA值都会将和变成NA…the!is.na将过滤掉它们。@RandyMarsh正确!话虽如此。。是我最初的方法不适合我试图做的事情,还是我没有看到明显的错误?再次感谢Ric SIt给你这个错误,因为根据文档,
is.na
接受“原子向量、列表、成对列表和NULL”,因此没有矩阵或数据帧