【发布时间】:2014-05-20 20:08:26
【问题描述】:
我有一个这样的向量列表:
>list
[[1]]
[1] "a" "m" "l" "s" "t" "o"
[[2]]
[1] "m" "y" "o" "t" "e"
[[3]]
[1] "n" "a" "s"
[[4]]
[1] "b" "u" "z" "u" "l" "a"
[[5]]
[1] "c" "m" "u" "s" "r" "i" "x" "t"
1-首先,我想在表格中选择元素数量最多的向量(在本例中为第 5 个具有 8 个元素的向量)。这很容易。
2-Second 我想选择列表中长度等于或小于前一个的所有向量,并将它们与前一个向量相交。
我的另一种可能性是选择第一个字符的名称。在这种情况下,这相当于选择以“a”或“b”开头的向量,即列表中的第一个和第四个。在这种情况下,我不知道如何在知道它们的第一个元素的列表中选择多个向量。
3-最后,我想只保留具有最少匹配数的交集。
在这种情况下,列表中的四个向量,以“b”开头。然后对其余向量再次开始该过程,但在“相交”时已经考虑了第 4 和第 5 个向量。在这种情况下,将选取第二个元素并将该元素与第 4 和第 5 的“unique() 组合”相交。
我希望我已经解释了自己!有没有办法在没有 3-4 个“for”和“if”循环的情况下在 R 中做到这一点?换句话说。有没有使用 lapply 或类似方法的聪明方法?
【问题讨论】:
-
请通过
dputing 输入您的输入列表和所需结果,让人们更容易帮助您。见here。请向我们展示您尝试过的代码以及为什么它不能满足您的需求。分享您的尝试对每个人都有帮助。它表明您已经花时间尝试帮助自己,它使我们免于重复明显的答案,它可以帮助您获得更具体和相关的答案。干杯。 -
抱歉解释含糊。对我来说,如果输出是一个包含所选向量的第一个字符的列表,它就可以工作。在这种情况下,它将是“c”“b”“m”“n”。一旦我设置了整个循环,我将把它上传到这里。再次抱歉。
-
不管怎样,现在已经解决了,也许我很快就跳到了这里:)