【发布时间】:2017-03-15 17:03:35
【问题描述】:
我正在尝试编写一个将空字符串转换为 NA 的函数。我的一个专栏的摘要如下所示:
a b
12 210 468
我想将 12 个空值更改为 NA。我还有一些其他因素列,我想将它们的空值更改为 NA,所以我从这里和那里借了一些东西来想出这个:
# change nulls to NAs
nullToNA <- function(df){
# split df into numeric & non-numeric functions
a<-df[,sapply(df, is.numeric), drop = FALSE]
b<-df[,sapply(df, Negate(is.numeric)), drop = FALSE]
# Change empty strings to NA
b<-b[lapply(b,function(x) levels(x) <- c(levels(x), NA) ),] # add NA level
b<-b[lapply(b,function(x) x[x=="",]<- NA),] # change Null to NA
# Put the columns back together
d<-cbind(a,b)
d[, names(df)]
}
但是,我收到了这个错误:
> foo<-nullToNA(bar) Error in x[x == "", ] <- NA : incorrect number of subscripts on matrix Called from: FUN(X[[i]], ...)
我已尝试在此处找到答案:Replace all 0 values to NA,但它会将我的所有列更改为数值。
【问题讨论】:
-
为什么不用
is.null()函数而不是x==""?也许什么都找不到。您是否检查过您的levels是否返回任何内容。您可以使用数据逐步检查函数的内部。忽略函数并在函数内部逐行处理数据。
标签: r function na missing-data