作为问题,我可以看到后一种方法的速度更高,为什么要使用第一种?谢谢。
问问题
1059 次
3 回答
2
如果您尝试删除未使用的级别,您需要做的就是:
x <- factor(x)
于 2011-01-17T07:01:17.203 回答
2
R 中的新功能(从 2.12.0 版开始)是droplevels()
做同样事情的功能。它被实现为:
> base:::droplevels.factor
function (x, ...)
factor(x)
<environment: namespace:base>
所以我会出于偏好使用该功能。它是 R 中的通用函数,具有类对象的方法"factor"
和"data.frame"
,当数据框中有许多因素需要降低级别时,后者很有用。
于 2011-01-17T07:47:11.827 回答
2
这两个命令的作用完全相同,但并不完全相同,尤其是当您保留因子的原始顺序时。在某些情况下,您不能使用: 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 顺序重新调整文本。我想保留可以使用reorder=FALSE
选项的顺序drop.levels()
。
这是 的默认行为factor()
。
于 2011-01-17T10:42:20.100 回答