我需要有关如何以迭代方式管理列表的帮助。
我有以下列表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)
)返回list
“ x”即“ data.frame”内的每个“ data.frame”。因此,我们只需要调用x$id
(或x[['id']]
)来提取“ id”列。本质上,“ x”不是索引。但是,如果需要基于索引进行子集化,则必须遍历“ list1”的序列(或者如果list
元素已命名,则遍历names
它的)
lapply(seq_along(list1), function(i) combn(unique(list1[[i]]$id), 2))
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句