本文介绍了R 应用错误 - as.matrix.data.frame() 中的错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我遇到了一个莫名其妙的错误.我正在使用以下函数删除任何列中包含 NA 观察值的数据帧的行

i am encountering a baffling error.i am using the following function to delete rows of a dataframe containing an NA observation in any column

##### removes NA'd rows from a dataFrame
wipeNArows<-function(X){
  rowsToDelete<-unique(unlist(apply(apply(X,2,is.na),2,which)))
  if (length(rowsToDelete)>0){
    return (X[-rowsToDelete,])
  }
  else{
    return (X)
  }
}

此功能正常工作,例如一个可重现的例子是:

This function works fine normally, for instance a reproducible example is:

testFrame<-data.frame(x=rpois(20,10),y=rpois(20,10),z=rpois(20,10))
rowsToDelete<-sample(1:nrow(testFrame),5,FALSE)
testFrame$x[rowsToDelete]<-NA
testFrame
wipeNArows(testFrame) ### removes the rows where NA is encountered

现在我有一个包含大约 2993 行的数据框.当我通过函数传递这个数据框时,我面临以下错误:

Now i have a data frame containing about 2993 rows. When i pass this data frame through the function i face the following error:

Error in apply(apply(X, 2, is.na), 2, which) :
error in evaluating the argument 'X' in selecting a method for function 'apply': Error in as.matrix.data.frame(X) :
dims [product 14965] do not match the length of object [14974]

感谢您的回复,

推荐答案

另一种解决问题的方法是 na.omit

Another way to solve your problem would be na.omit

na.omit(testFrame)

    x  y  z
2   7 11 11
3  12 10 10
4  13 10  9
6  11 10 12
7  13 14  8
8   7  9  7
9   8 11 12
10  5 10  7
11  5 15  9
12  7 13  9
15 15  8  9
16 13  7 15
17  5 10 12
18  9  8  6
20 18  7  6

这篇关于R 应用错误 - as.matrix.data.frame() 中的错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-16 05:16