【发布时间】:2018-04-30 09:47:08
【问题描述】:
我有一个 30 行和 100 列的数据框。此数据的某些列具有“nan”和“inf”值。瞬间,我创建了一个这样的数据框示例
test<-data.frame(a=c("inf",1,"inf"),b=c("nan",3,"nan"))
row.names(test)<-c("w1","w2",w)
当我想将 inf 和 nan 更改为零时,我尝试使用这些代码
na_codes<-"inf|nan"
test<-apply(test, 2, function(x){ ifelse(x %in% na_codes, 0, x) } )
test<-as.data.frame(lapply(test, function(x) {
levels(x)[levels(x) %in% na_code] <- 0
x
})
)
test<-type.convert(sub("inf|nan", 0, as.matrix(test)))
但是我的数据的类变成了factor! 当我想规范化我的数据时,我使用了这段代码
normalize<-function(x){
return((x-min(x))/(max(x)-min(x)))
}
norm_test<-sapply(data.frame(test),normalize)
它崩溃返回以下消息:
Error in Summary.factor(766L, na.rm = FALSE) :
‘min’ not meaningful for factor
我想将因子转换为数值类,所以使用了这段代码
norm_test<-sapply(data.frame(as.numeric(as.character(test))),normalize)
不幸的是,它也会崩溃返回以下警告
Warning message:
In data.frame(as.numeric(as.character(num_base))) :
NAs introduced by coercion
实际上,这些代码适用于我上面提到的测试样本,我在 我的数据 中遇到了这些错误!!!!
我需要了解为什么会发生崩溃以及如何防止此类错误。
非常感谢!
【问题讨论】:
标签: r