在R中选择矩阵中的项目 - 意外行为

时间:2011-09-16 13:34:10

标签: r

我在从R中的矩阵中选择项目时遇到问题。示例如下。

mydata <- matrix(paste(LETTERS[1:26]), nrow=104)

创建一个矩阵,字母A到Z各重复四次。当我要求选择带有字母“G”的项目时:

mydata[mydata[,1]==c("G"),]

我按预期得到四个“G”。当我要求“G”和“H”时

mydata[mydata[,1]==c("G", "H"),]

我按预期得到4个“G”和4个“H”。到现在为止还挺好。但是当我要求“G”,“H”和“我”......

mydata[mydata[,1]==c("G", "H", "I"),]

我只得到两个“G”,“H”和“我”,以及警告信息:

longer object length is not a multiple of shorter object length

当我希望获得四套“G”,“H”和“I”时。

我在某种程度上是一个numpty - 谁能指出我在哪里错了?我已经花了至少半个小时寻找答案而且很难过。

感谢您的期待!

1 个答案:

答案 0 :(得分:1)

您现在需要%in%使用==

为了进一步扩展约书亚的评论,你应该注意到你的“成功”尝试“==”可能因为你猜对的原因没有成功。 R首先将测试向量扩展为rep(c(“G”,“H”),52),然后比较与该较长向量精确对齐的元素。这只是因为“G”和“H”是相邻的并且在奇偶位置上对齐,你得到了看似合理的东西。添加额外的字母搞砸了“奇偶”对齐并且还发出了警告。这就是约书亚谈论104/3的非整数结果的原因。