如何从矩阵、向量等中删除因子? [复制]

Posted

技术标签:

【中文标题】如何从矩阵、向量等中删除因子? [复制]【英文标题】: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 的回答确实有效。 我不知道你为什么不想要因素。我知道他们有疣,但大多数时候他们是看不见的。对于需要字符输入的函数,它们(通常)被无形地转换为字符,并且它们与数据帧中的其他类型的数据愉快地共存。大多数情况下,当一个因素弄乱了您的数据时,这是因为您无意中强制转换了一个矩阵,即使您的因素只是一个字符变量,事情也会变得一团糟。 【参考方案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 这个答案链接到的问题会做你想做的事。

以上是关于如何从矩阵、向量等中删除因子? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

提取我从基本矩阵中得到的平移向量的比例

如何使用 Eigen 从 vector<vector<float>> 创建矩阵? [复制]

如何通过在 Rcpp 或 Armadillo 中将矩阵乘以向量元素来复制 R 的功能?

如何将两列“计数”矩阵转换为 R 中的二进制向量? [复制]

matlab如何求矩阵特征值

矩阵运算相关函数