リストを反復的に管理する方法についてサポートが必要です。
次のリストlist
は、同じ列で行数が異なる複数のデータフレームで構成されています。例:
[[1]]
id InpatientDays ERVisits OfficeVisits Narcotics
1 a 0 0 18 1
2 b 1 1 6 1
3 c 0 0 5 3
4 d 0 1 19 0
5 e 8 2 19 3
6 f 2 0 9 2
[[2]]
id InpatientDays ERVisits OfficeVisits Narcotics
7 a 16 1 8 1
8 b 2 0 8 0
9 c 2 1 4 3
10 d 4 2 0 2
11 e 6 5 20 2
12 a 0 0 7 4
リスト内の各「データフレーム」のIDの可能なすべての組み合わせを取得する関数を適用したいと思います。
私はこのようなものを試すつもりでしたlapply(list1, function(x) combn(unique(list1[x]$id)))
が、もちろん機能しません..次のようなものを期待しています:
[[1]]
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [,13] [,14] [,15]
[1,] "a" "a" "a" "a" "a" "b" "b" "b" "b" "c" "c" "c" "d" "d" "e"
[2,] "b" "c" "d" "e" "f" "c" "d" "e" "f" "d" "e" "f" "e" "f" "f"
[[2]]
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,] "a" "a" "a" "a" "b" "b" "b" "c" "c" "d"
[2,] "b" "c" "d" "e" "c" "d" "e" "d" "e" "e"
これは可能ですか?これが単一のデータフレームで機能することは確かですdf
combn(unique(df$id),2)
使用する必要があります unique(x$id)
lapply(list1, function(x) combn(unique(x$id),2))
OPのコードは、を使用して「list1」をループしていlapply
ます。匿名関数呼び出し(function(x)
)は、「x」内の「data.frame」のそれぞれを「data.frame」として返しますlist
。したがって、「id」列を抽出するには、x$id
(またはx[['id']]
)を呼び出す必要があります。本質的に、「x」はインデックスではありません。ただし、インデックスに基づいてサブセット化する必要がある場合は、「list1」のシーケンスをループする必要があります(または、list
要素に名前が付けられている場合は、そのシーケンスをループしますnames
)
lapply(seq_along(list1), function(i) combn(unique(list1[[i]]$id), 2))
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加