私はこことGoogleで答えを見つけようとしましたが、運が良かったのでこの問題で数日間苦労しました。私は、サイクルが慎重なコミュニティー内にあるのか、それらの間にあるのか、パターンがないのかを調べるためにネットワークを分析しています。私のデータは、サイクルのリスト(ループを形成する3つのノード)とコミュニティのリスト(ノードの可変量)です。私は2つの質問があり、1)どのように二つのリストを比較すると、2)どのように読みやすい形で出力比較結果を:私は2つのリスト(両方IGRAPHを持って2つのリストを比較して "ヒット"をデータフレームに出力する方法
- 質問1
オブジェクト)、678個のアイテム(それぞれ3つのエレメント、すべての文字)と、異なるエレメント数を持つそれぞれ11個のアイテムが含まれています。例:
x1 <- as.character(c(1,3,5))
x2 <- as.character(c(2,4,6))
x3 <- as.character(c(7,8,9))
x4 <- as.character(c(10,11,12))
x <- list(x1, x2, x3, x4)
y1 <- as.character(c(1,2,3,4,5))
y2 <- as.character(c(2,3,4,5))
y3 <- as.character(c(1,2,3,4,5,7,8,9))
y <- list(y1, y2, y3)
寄付:
> x
[[1]]
[1] "1" "3" "5"
[[2]]
[1] "2" "4" "6"
[[3]]
[1] "7" "8" "9"
[[4]]
[1] "10" "11" "12"
> y
[[1]]
[1] "1" "2" "3" "4" "5"
[[2]]
[1] "2" "3" "4" "5"
[[3]]
[1] "1" "2" "3" "4" "5" "7" "8" "9"
私はすべてのヒットをy
にすべてのコンポーネントに対してx
にすべてのコンポーネントを比較し、追加したい(すなわちx[[i]]
からすべての要素もy[[i]]
で発見された場合)に新しいデータフレーム私はall()
と%in%
を使用してループを試してみましたが、これは動作しませんでした:
for (i in 1:length(x)) {
for (j in 1:length(y)) {
hits <- all(y[[j]] %in% x[[i]]) == TRUE
print(hits)
}
}
これは12本のFALSE
ヒットを返します。
all(x[[1]] %in% y[[1]])
返しTRUE
それが必要として、そして:
all(x[[1]] %in% y[[2]])
返しFALSE
それが必要として、個々のコンポーネントの確認、それがために、働いているはずです。私はここでどこが間違っていますか?
- 質問は2
私はDFにループした結果を出力するためのいくつかのソリューションを見てきましたが、それは私が必要なものを正確ではありません。私がアウトプットとして望むのは、各サイクルがどのコミュニティに入っているかを示すデータフレームです。11のコミュニティしかないので、リストコンポーネントのインデックスを参照できるだけですが、これを行う方法は見つけられていません。 paste()
を使用して、コミュニティのノード名をタイトルに連結することもできます。いずれにしても、必要な出力は次のとおりです。
cycle community
1 1_3_5 1_2_3_4_5
2 1_3_5 1_2_3_4_5_7_8_9
3 7_8_9 1_2_3_4_5_7_8_9
私は何らかのif文を推測しています。私はこれが実行するのがかなり簡単でなければならないと思っています。それにもかかわらず、あなたの時間に感謝し、エッセイを残念に思っています。
はい。ありがとう= D。これは〜400のインデックスペア、サイクルとコミュニティを持つリストを私に与えます。だから、このリストを争うのは単なる問題です。 – ec1013