gpt4 book ai didi

r - 美元运算符作为 sapply 的函数参数未按预期工作

转载 作者:行者123 更新时间:2023-12-03 23:35:17 24 4
gpt4 key购买 nike

我有以下 list

test_list=list(list(a=1,b=2),list(a=3,b=4))

我想提取所有具有列表元素名称的元素 a .

我可以通过
sapply(test_list,`[[`,"a")

这给了我正确的结果
#[1] 1 3

当我用 Rs 美元运算符尝试相同时 $ , 我得到 NULL
sapply(test_list,`$`,"a")
#[[1]]
#NULL
#
#[[2]]
#NULL

但是,如果我在 test_list 的单个元素上使用它它按预期工作
`$`(test_list[[1]],"a")
#[1] 1

我在这里遗漏了一些明显的东西吗?

最佳答案

据我所知,这是两件事的结合。

一、the second element of $ is matched but not evaluated so it cannot be a variable .

其次,当参数传递给函数时,它们被分配给函数调用中的相应变量。当传递给 sapply "a"分配给一个变量,因此将不再使用 $ .我们可以通过运行来看到这一点

sapply("a", print)
[1] "a"
a
"a"

这可能会导致这样的特殊结果
sapply(test_list, function(x, a) {`$`(x, a)})
[1] 1 3

哪里尽管 a是一个变量(甚至还没有被赋值) $将其与列表中元素的名称相匹配。

关于r - 美元运算符作为 sapply 的函数参数未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34544888/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com