【发布时间】:2017-08-20 21:46:03
【问题描述】:
回答了类似的问题here
我有一个如下所示的数据框列表(即 1000 个):
> lst[1000]
$rand1000
Binomial S4 S5 S6
254 Euastacus suttoni 25.816165 4.1916527 86.3
327 Orconectes hobbsi 16.726409 5.5241308 25.0
282 Faxonella creaseri 17.026970 6.4109494 18.0
319 Orconectes durelli 14.093957 7.2342324 35.0
525 Procambarus raneyi 15.799001 6.3746574 55.1
我想将函数应用于列表中所有数据框的 S4、S5 和 S6 列。所以我写了这个函数:
lapply(lst, function(x) {x$S4 <- sensitivity.rand(x[[2]], 25); x})
(这里的 'sensitivity.rand' 是一个函数,它接受 vector 和 threshold(在上面的代码中 25 是阈值)并分配到 H 或 L)
输出为(这很好):
$rand1000
Binomial S4 S5 S6
254 Euastacus suttoni H 4.1916527 86.3
327 Orconectes hobbsi H 5.5241308 25.0
282 Faxonella creaseri H 6.4109494 18.0
319 Orconectes durelli H 7.2342324 35.0
525 Procambarus raneyi H 6.3746574 55.1
但是如果我看到原始数据框没有改变(即它和以前一样)。我怎样才能做到这一点。我需要对列表中所有数据框的所有 S4、S5 和 S6 列执行此操作。这样原来的数据框就会变成这样:
> lst[1000]
$rand1000
Binomial S4 S5 S6
254 Euastacus suttoni H H H
327 Orconectes hobbsi H L H
282 Faxonella creaseri H H L
319 Orconectes durelli H L L
525 Procambarus raneyi H H H
【问题讨论】: