【问题标题】:How do you remove factors from a matrix, vector, etc.? [duplicate]如何从矩阵、向量等中删除因子? [复制]
【发布时间】: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 &lt;- sapply(data, is.factor); data[i] &lt;- lapply(data[i], as.character)
  • 我刚刚查了一下,Marek 的回答确实有效。
  • 我不知道你为什么不想要因素。我知道他们有疣,但大多数时候他们是看不见的。对于需要字符输入的函数,它们(通常)被无形地转换为字符,并且它们与数据帧中的其他类型的数据愉快地共存。大多数情况下,当一个因素弄乱了您的数据时,这是因为您无意中强制转换了一个矩阵,即使您的因素只是一个字符变量,事情也会变得一团糟。

标签: r


【解决方案1】:

如果您想将特定数据框转换为无因子,我会在这里参考:Convert data.frame columns from factors to characters

dataframe 被命名为 bob:

 bob <- data.frame(lapply(bob, as.character), stringsAsFactors=FALSE)

另外,如果你想读入一个特定的数据帧并且从一开始就没有任何因素,你可以这样写:

file <- read.table(pathtoFile, stringsAsFactors=F)  

【讨论】:

  • 这是“使其可重现”的人会感到沮丧的地方,因为我的问题仅在使用“熔体”后才会出现。我现在正在更新我的问题。
  • @AaronBrown 可能是 another answer 这个答案链接到的问题会做你想做的事。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-28
  • 2011-12-26
  • 1970-01-01
  • 1970-01-01
  • 2017-11-18
  • 1970-01-01
相关资源
最近更新 更多