[英]windrose error: Error in Summary.factor ‘min’ not meaningful for factors
[英]Error in Summary.factor ‘min’ not meaningful for factors!! How can I eliminate this error?
我有一個帶有30行和850列的數據框。 此數據的某些列具有“ 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_code<-c("nan","inf") test<-as.data.frame(lapply(test, function(x) { + levels(x)[levels(x) %in% na_code] <- 0 x }) )
所以我有數據幀的數據類型,對嗎? 當我想使用此功能標准化我的數據時
normalize<-function(x){ return((x-min(x))/(max(x)-min(x))) }
norm_test<-lapply(test, normalize)
我遇到了這個錯誤
Error in Summary.factor(c(2L, 1L, 2L), na.rm = FALSE) : 'min' not meaningful for factors
我嘗試這段代碼
norm_test<-lapply(as.list(test), normalize)
您可以像這樣在lapply
使用as.numeric
:
test<-as.data.frame(lapply(test, function(x) {
levels(x)[levels(x) %in% na_code] <- 0
as.numeric(x) }))
希望能幫助到你!
首先,這是解決該問題的偉大嘗試-但我想向您介紹一些捷徑。
library(tidyverse)
library(magrittr)
test %<>%
mutate_if(is.factor, funs(as.numeric(as.character(.)))) %>%
mutate_all(~if_else(is.infinite(.x) | is.nan(.x), 0, .x))
首先,這將產生將無限值和NaNs變為零的效果。 然后,由於我們已將因子轉換為字符並將字符轉換為數字,因此現在可以再次應用normalize
功能。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.