按列将功能应用于表列表

时间:2018-11-28 19:11:15

标签: r

我有一个这样的表对象列表:list(X1A.1145442 = structure(c(0.3204, 0.6796, 0.3645, 0.6355, 0.1615, 0.8385, 0.3266, 0.6734, 0.2884, 0.7116, 0.3042, 0.6958), .Dim = c(2L, 6L), class = "table", .Dimnames = list(x = c("1", "2"),c("ES1-5", "ES14-26", "ES27-38", "ES6-13", "SA1-13", "SA14-25"))), X1A.1158042 = structure(c(0.4437, 0.5563, 0.4264, 0.5736, 0.2308, 0.7692, 0.3896, 0.6104, 0.2997, 0.7003, 0.3148, 0.6852), .Dim = c(2L, 6L), class = "table", .Dimnames = list(x = c("1", "2"), c("ES1-5", "ES14-26", "ES27-38", "ES6-13", "SA1-13", "SA14-25"))))

列表看起来像这样:

$`X1A.1145442`

x    ES1-5 ES14-26 ES27-38 ES6-13 SA1-13 SA14-25     
1 0.3204  0.3645  0.1615 0.3266 0.2884  0.3042
2 0.6796  0.6355  0.8385 0.6734 0.7116  0.6958

$X1A.1158042

x    ES1-5 ES14-26 ES27-38 ES6-13 SA1-13 SA14-25
1 0.4437  0.4264  0.2308 0.3896 0.2997  0.3148
2 0.5563  0.5736  0.7692 0.6104 0.7003  0.6852

我想以列方式获取表列表中每个元素的最小值。

我尝试了一些失败的尝试,但是没有成功。有人可以帮我吗。

此致

亚历克斯

1 个答案:

答案 0 :(得分:3)

它是list个中的matric个。因此,单位将是每个元素。如果我们使用lapply,那么它将循环遍历每个元素,除非将其转换为data.frame。在这里,我们可以使用apply,其中MARGIN指定为2(用于遍历列)

lapply(lst1, function(x) apply(x, 2, min))

或者另一个选择是colMins中的matrixStats

library(matrixStats)
lapply(lst1, colMins)