1

私はRプログラミング言語を1か月間学んでいますが、リストとデータフレームにいくつかの問題があります。2つ以上のリストの共通部分を見つける方法がわかりませんでした。名前、性別、年齢、お気に入りの3本の映画、国連への支援、近親者の誕生日と月を含む4つのリストを作成しました。

x<- list("Corinna Neubach", "female", 24, list("Film1","Film2","Film3"), TRUE,list("31.05",  "19.12"))
z<- list("Yasmin Ritschl","female", 21, list("Film6","Film7","Film8"), TRUE, list("20.03", "10.12"))
a<- list("Stefan Braun", "male", 23, list("Film6","Film7","Film8"),TRUE,list("25.06", "15.12"))
y<- list("Melissa Okay", "female", 23, list("Film3","Film4","Film5"), TRUE,list("31.05", "10.12"))

4つのリストに共有の誕生日や名前があるかどうかを確認したいと思います。最初に「Reduce」を使用してコードを作成しましたが、希望するソリューションが得られません。次に、intersectで試してみましたが、もっと簡単な方法があるはずです。

intersect(x[[6]],y[[6]])
intersect(x[1],y[1])
intersect(x[[6]],z[[6]])
intersect(x[1],z[1])
intersect(y[[6]],z[[6]])
intersect(y[1],z[1])
intersect(x[[6]],z[[6]])
intersect(x[1],z[1])
intersect(a[[6]],x[[6]])
intersect(a[1],x[1])
intersect(a[[6]],z[[6]])
intersect(a[1],z[1])
intersect(a[[6]],y[[6]])
intersect(a[1],y[1])
4

1 に答える 1

2

まず第一に、私は一人listの人があなたのタスクに適切なデータ構造であるとは思いません。それらはすべて同じ構造を持っています、これはdata.frame適切な指標です。

sは要素内にリストをdata.frame含めることができますが、データは、リストを正規化されたリレーショナルデータベースのテーブルに変換することを提案しています。data.frameこれをRの2秒または3秒にマップできます。

  • 個人データ
  • 3つのお気に入りの映画:注文された場合(1番目、2番目、3番目の選択肢)、data.frameそのために人物テーブルの列を使用できます。data.frameそうでない場合は、列の人とフィルムで余分にそれらを引っ張ってください。
  • 親戚の誕生日については、あなたの例のデータが各人に正確に2つを与えているのは偶然だと思います。それで、それを別のdata.frameにプルします。

重複をハンティングするには、を参照してください? table


編集:wrt。listdata.framesを構築するための要件listはR:のsです。

> a <- data.frame (person = "John Doe", gender = "female")
> a
    person gender
1 John Doe female
> is.list (a)
[1] TRUE
于 2012-12-16T13:00:12.207 に答える