2014-10-27 274 views
1

我在R中有一个Dataframe,其中某些列中的某些行的值为NA或空字符串""。我想将它们转换为NULL值。将R Dataframe中的NA和“”单元格设置为NULL

所以我需要我的数据框中的任何单元格为NA""NULL。我怎样才能做到这一点?

当我尝试:

DF[ , DF$Column == NA] <- NULL 

DF[ , DF$Column == ""] <- NULL 

我得到的错误:missing values are not allowed in subscripted assignments of data frames

如果我尝试:

DF[ , is.na(DF$Column)] <- NULL 

我得到的错误:duplicate subscripts for columns

如果我尝试:

is.na(DF$Column) <- NULL 

DF[DF == NA] <- NULL 

我没有得到任何错误,但没有在我的数据帧变化。

+6

这是R中NULL值的误用。向量(实质上是data.frame中的列)不能包含观测值和NULL值的混合。在R中,我们更喜欢NA来表示缺少的数据。 NULL值用于从列甚至整个列中移除元素。 – MrFlick 2014-10-27 22:14:20

+1

明白了,谢谢!所以我最终会将这个数据集加载到SQL DB中。 SQL会将NA解释为NULL吗? – brno792 2014-10-27 22:35:05

+0

取决于你如何做到这一点。如果你使用'RODBC :: sqlSave',是的,我很确定这是如何工作的。 – Gregor 2014-10-27 22:37:55

回答

1

向量中确实没有NULL值。 NA是占位符。如果你想删除整列(这是什么赋予NULL会做)时,其值都是NA那么这会成功:

df[ , sapply(df, function(x) all(is.na(x))) ] <- NULL 

如果你想构造一个对象,你只保留没有那些行NA值:

df[ apply(df,1, function(rw) !any(is.na(rw))) , ] 
相关问题