簡體   English   中英

gdata包中的drop.levels(x)和as.factor(as.character(x))有什么區別?

[英]What is the difference between drop.levels(x) in the gdata package and as.factor(as.character(x))?

作為問題,我可以看到后一種方法的速度更高,為什么要使用第一種? 謝謝。

如果您嘗試刪除未使用的級別,您需要做的就是:

x <- factor(x) 

R中的新功能(從版本2.12.0開始)是函數droplevels()來做同樣的事情。 它實現為:

> base:::droplevels.factor
function (x, ...) 
factor(x)
<environment: namespace:base>

所以我會優先使用該功能。 它是R中的通用函數,具有類"factor""data.frame"類對象的方法,后者在數據框中有許多因素需要等級下降時很有用。

這兩個命令完全相同但不完全相同,特別是當你保留了因子的原始順序時。 在某些情況下,您不能使用: as.factor(as.character(f)) 看到:

par(mfrow=c(2,3))
f <- factor(c("D", "B", "C", "K", "A"), levels=c("K", "B", "C", "D"))[2:4]
plot(f, main="Original factor")
f.fc <- as.factor(as.character(f))
plot(f.fc, main="as.factor(as.character(f))")
f.d <- drop.levels(f)
plot(f.d, main="drop.levels(f)")
f.d <- drop.levels(f, reorder=FALSE)
plot(f.d, main="drop.levels(f, reorder=FALSE))")
f.f <- factor(f)
plot(f.f, main="factor(f)")

替代文字

as.factor(as.character(f))drop.levels(f)做同樣的事情並且它們不保留因子的原始順序,它們都以ABC順序重新調整文本。 我想保留你可以在drop.levels()使用reorder=FALSE選項的reorder=FALSE

這是factor()的默認行為。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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