【发布时间】:2013-08-03 00:37:50
【问题描述】:
我在不喜欢它们的代码中注入了自己的因素。
如何从矩阵中删除所有因子?一个向量?一个data.frame?
下面的问题更新
我认为这个问题足够笼统,但显然不是。
使用melt 时会出现一些因素,因此我正在寻找一种在执行完melt 命令后删除这些因素的方法。正如您从下面的示例代码中看到的那样,因子方法(不确定如何称呼它)为第 3 列输入。我认为这是因为此列是文本。我需要删除这个因子,因为我正在从矩阵中检索数据,所以因子 3 是没有意义的(在这种情况下)。
names(airquality) <- tolower(names(airquality))
data <- melt(airquality, id=c("month", "day"))
is.factor(data[,3])
【问题讨论】:
-
矩阵不能包含因子。您可以设置
options(stringsAsFactors=FALSE)以防止发生自动强制,但这可能会导致其他人的代码出现问题,因为他们可能依赖它。 -
哎呀!显然我需要学会以某种方式接受因素!我希望通过这个项目的结束来避免,但也许我不能!现在正在做一些搜索,但如果你们都有任何好的资源,我会在这里找到我能找到的!
-
这是重复的; Marek 的 Answer 将为您工作:
i <- sapply(data, is.factor); data[i] <- lapply(data[i], as.character) -
我刚刚查了一下,Marek 的回答确实有效。
-
我不知道你为什么不想要因素。我知道他们有疣,但大多数时候他们是看不见的。对于需要字符输入的函数,它们(通常)被无形地转换为字符,并且它们与数据帧中的其他类型的数据愉快地共存。大多数情况下,当一个因素弄乱了您的数据时,这是因为您无意中强制转换了一个矩阵,即使您的因素只是一个字符变量,事情也会变得一团糟。
标签: r