ホイールを再発見する前に:リストにx
を受け取り、y[[i]] = intersect(x[[1]][[i]], x[[2]][[i]], ...)
というようなリストy
を返す関数がRにありますか?もしそうでなければ、2行でコード化するRアドリックな方法がありますか?Rのリストの交差
Q
Rのリストの交差
9
A
答えて
9
これは機能しますか?
x <- list(list(1:3,2:4),list(2:3,4:5),list(3:7,4:5))
maxlen <- max(sapply(x,length))
lapply(seq(maxlen),function(i) Reduce(intersect,lapply(x,"[[",i)))
(追加のステップとしてReduce
を使用する必要がありますのでintersect
は2つのだけの引数を取ります)、私は任意のハードケースでこれを試していない
PS - 例えば不均一な長さのリスト。
2
次のようにReduce
が簡単に使用することができそうです。
> Reduce(intersect, list(v1 = c("a","b","c","d"),
+ v2 = c("a","b","e"),
+ v3 = c("a","f","g")))
[1] "a"
関連する問題
- 1. 交差
これはかなり良いとRの精神です。 – gappy