1

私は現在、リスト(値で満たされた複数のベクトルを含む)がベクトルと等しいかどうかを確認しようとしています。残念ながら、次の関数は機能しませんでした:match()、、。私が達成しようとしていることの例を以下に示します。any()%in%

まあ言ってみれば:

lists=list(c(1,2,3,4),c(5,6,7,8),c(9,7))
vector=c(1,2,3,4)
answer=match(lists,vector)

Falseこれを実行すると、肯定的な結果ではなく値が返されます。ベクトルをベクトルと比較すると機能しますが、ベクトルをリストと比較すると正しく機能しないようです。

4

2 に答える 2

2

私はintersect、このようなものを使用します:

lapply(lists,intersect,vector)
[[1]]
[1] 1 2 3 4

[[2]]
numeric(0)

[[3]]
numeric(0)
于 2013-02-21T17:17:32.093 に答える
1

結果をどのようにするかは完全にはわかりませんが(たとえば、ベクトルの順序は気になりますか?)、それでも、について考える必要がありますlapply。例えば、

##Create some data
R> lists=list(c(1,2,3,4),c(5,6,7,8),c(9,7)) 
R> vector=c(1,2,3,4) 

次にlapply、各リスト要素を調べて関数を適用するために使用します。この場合、私はmatch関数を使用しました(あなたがあなたの質問でそれを述べたので):

R> lapply(lists, function(i) all(match(i, vector)))
[[1]]
[1] TRUE

[[2]]
[1] NA

[[3]]
[1] NA

おそらくベクトルに変換する価値があるので、

R> unlist(lapply(lists, function(i) all(match(i, vector))))
[1] TRUE   NA   NA

FALSEに変更NAするには、次のようにします。

m = unlist(lapply(lists, function(i) all(match(i, vector))))
m[is.na(m)] = FALSE
于 2013-02-21T17:09:21.053 に答える