簡體   English   中英

Summary.factor'min'中的錯誤對因素沒有意義! 如何消除此錯誤?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM