相关疑难解决方法(0)

沿阵列中的n个维度之一选择

我在R中有一个数组,由这样的函数创建:

A <- array(data=NA, dim=c(2,4,4), dimnames=list(c("x","y"),NULL,NULL))
Run Code Online (Sandbox Code Playgroud)

我想沿着一个维度选择,所以对于上面的例子,我会:

A["x",,]
dim(A["x",,])    #[1] 4 4
Run Code Online (Sandbox Code Playgroud)

有没有办法概括,如果我事先不知道我的数组可能有多少维度(除了我要选择的命名的维度)?我想编写一个函数来获取可能格式化为A的输入,或者:

B <- c(1,2)
names(B) <- c("x", "y")

C <- matrix(1, 2, 2, dimnames=list(c("x","y"),NULL))
Run Code Online (Sandbox Code Playgroud)

背景

一般背景是我正在研究ODE模型,因此对于deSolve的ODE函数,它必须采用具有当前状态的单个命名向量.对于其他一些函数,比如计算相位平面/方向场,使用更高维数组来应用微分方程更为实际,我希望避免使用相同函数的多个副本,只需使用不同的函数我想要选择的维度之后的逗号数量.

r multidimensional-array

13
推荐指数
2
解决办法
2348
查看次数

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

在本答案中,alist()建议使用a作为创建包含空元素的列表的简单方法.用于此的用例将是构建适合于对[被安排的via 的调用的列表do.call().例如:

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

[1] 4 5 6
Run Code Online (Sandbox Code Playgroud)

提示答案的特定问题alist()需要根据对象动态设置空参数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] …
Run Code Online (Sandbox Code Playgroud)

r

8
推荐指数
2
解决办法
1615
查看次数

标签 统计

r ×2

multidimensional-array ×1