gpt4 book ai didi

r - 创建一个可变长度的 `alist()`

转载 作者:行者123 更新时间:2023-12-04 05:13:03 25 4
gpt4 key购买 nike

在此Answer中,提议使用alist()作为创建具有空元素的列表的简便方法。一个用例是构造一个列表,该列表适合于对通过[安排的do.call()的调用。例如:

x <- matrix(1:6, ncol = 2)
do.call(`[`, alist(x, , 2)) ## extract column 2 of x

[1] 4 5 6

提示 alist()答案的特定 Question需要根据对象 shortdim动态设置空参数。

如果一个人知道存在多少个维度,那该怎么办
al <- alist( , , ) ## 3 arguments for a 2-d object
al[[1]] <- x
shortdim <- 1
al[[shortdim + 1]] <- 1:2 ## elements 1 & 2 of dim shortdim, plus all other dims
do.call(`[`, al)

> do.call(`[`, al)
[,1] [,2]
[1,] 1 4
[2,] 2 5
> x[1:2, ] ## equivalent too
[,1] [,2]
[1,] 1 4
[2,] 2 5

可以通过 vector()创建动态长度列表,例如
ll <- vector(mode = "list", length = length(dim(x)) + 1)

但是不能以这种方式制作 alist
> vector(mode = "alist", length = length(dim(x)) + 1)
Error in vector(mode = "alist", length = length(dim(x)) + 1) :
vector: cannot make a vector of mode 'alist'.

有没有一种方法可以创建一个动态长度的 alist,可以在以后需要的地方填写?

最佳答案

好我会咬我可能会使用list(bquote())构造一个包含空符号的元素列表,然后将rep扩展到所需的长度。

n <- 2
rep(list(bquote()), n)
# [[1]]
#
#
# [[2]]
#
#

作为奖励,这是5种方法的集合,这些方法可以创建/访问作为每个列表元素内容所需的空符号:
bquote()
#
substitute()
#
quote(expr= )
#
formals(function(x) {})$x
#
alist(,)[[1]]
#

关于r - 创建一个可变长度的 `alist()`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17751862/

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