我在从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 - 谁能指出我在哪里错了?我已经花了至少半个小时寻找答案而且很难过。
感谢您的期待!
答案 0 :(得分:1)
您现在需要%in%
使用==
。
为了进一步扩展约书亚的评论,你应该注意到你的“成功”尝试“==”可能因为你猜对的原因没有成功。 R首先将测试向量扩展为rep(c(“G”,“H”),52),然后比较与该较长向量精确对齐的元素。这只是因为“G”和“H”是相邻的并且在奇偶位置上对齐,你得到了看似合理的东西。添加额外的字母搞砸了“奇偶”对齐并且还发出了警告。这就是约书亚谈论104/3的非整数结果的原因。