gpt4 book ai didi

r - `[[` 在这个 sapply 示例中寻找什么?

转载 作者:行者123 更新时间:2023-12-04 14:46:11 24 4
gpt4 key购买 nike

对此的跟进 How to use `[[` and `$` as a function?问题:我开始玩一些原始设置(为简单起见,将大小从 10000 减小到 3)

JSON <- rep(list(x,y),3)
x <- list(a=1, b=1)
y <- list(a=1)
JSON <- rep(list(x,y),3)
sapply(JSON, "[[", "a")
[1] 1 1 1 1 1 1
sapply(JSON,"[[",'b')
[[1]]
[1] 1

[[2]]
NULL

[[3]]
[1] 1

[[4]]
NULL

[[5]]
[1] 1

[[6]]
NULL

sapply(JSON,'[[',1)
[1] 1 1 1 1 1 1
sapply(JSON,'[[',2)
Error in FUN(X[[2L]], ...) : subscript out of bounds

我想我明白 - 搜索“b”与要求存在第二个元素不同。但是后来,我创建了一个更深层次的列表:
NOSJ<-rep(list(JSON),3)

sapply(NOSJ,'[[',1)
[,1] [,2] [,3]
a 1 1 1
b 1 1 1
sapply(NOSJ,'[[',2)
$a
[1] 1

$a
[1] 1

$a
[1] 1

现在我的头很痛。有人可以扩展什么 [[ (或其 sapply 方法)在这里做什么?

最佳答案

您可以将 sapply 和 lapply 视为将 seq_along(NOSJ) 操作为索引向量的 for 循环。

 for( i in seq_along(NOSJ) NOSJ[[i]]  .... then use "[[" with the 3rd argument 

所以第一个和第二个结果将是:
> NOSJ[[1]][[1]]
$a
[1] 1

$b
[1] 1

> NOSJ[[2]][[1]]
$a
[1] 1

$b
[1] 1
sapply的区别和 lapplysapply尝试使用 simply2array如果返回值的维度都相同,则返回矩阵或数组(就像在这种情况下使用 135 作为第三个参数时一样。老实说,我不知道为什么使用2,4, 或 6 作为第三个参数不返回原子向量。我认为应该。

关于r - `[[` 在这个 sapply 示例中寻找什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18763788/

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