如标题所示,如何强制 lapply 或 sapply 使用输入向量值来索引输出。 我有两个案例;让我从更简单的开始。以下代码
lapply(c('a', 'b'), function(idx){
rnorm(1)
})
给我输出
[[1]]
[1] -1.359386
[[2]]
[1] -0.3428958
但我想收到:
$a
[1] -1.359386
$b
[1] -0.3428958
最终目标,我的代码如下所示:
m = sapply(unique(isotopes[, 1]), function(el){
sapply(isotopes[isotopes$element == el, 2], function(mnr){
isotopes[isotopes$element == el & isotopes$mass_nr == mnr, 3]
})
})
它给了我类似的输出
$Pu
[1] 238.0496 239.0522 240.0538 241.0569 242.0587 244.0642
虽然我想获得列表列表,但能够使用
m['Pu'][240]
或 m['Pu']['240']
等(对于“Pu”isotopes[isotopes$element == el, 2]
是 238 239 240 241 242 244 的向量)
PS。当然可以用
m = function(el, mnr){ isotopes[isotopes$element == el & isotopes$mass_nr == mnr, 3] }
但我很感兴趣上述问题是否有一个巧妙的解决方案:)
你可以试试
lapply(c(a = "a", b = "b"), function(idx) {
rnorm(1)
})
这应该给出所需的输出
$a
[1] 1.556433
$b
[1] -0.2282002