【发布时间】:2014-04-27 13:10:55
【问题描述】:
我想编写一个函数,它将具有可变维数(例如,dim(X) => c(2,3) 或 dim(X) => c(2,3,5))的数组 X 以及维索引列表和数字索引作为输入。该函数根据指定的维度和索引返回数组的子集。例如:
dim(B) => c(2,5,10)
FUN(B, list(list(2,1:3), list(3,6:10))) => B[, 1:3, 6:10]
挑战来自于没有预先指定 B 的尺寸。我能想出的最佳解决方案是生成一个字符串s <- "B[,1:3, 6:10]"(细节省略且不重要),然后发出一个 eval(parse(text=s))。我不认为这是一个优雅的解决方案,也可能不是一个有效的解决方案。我想知道是否有人可以提出一个简单的方法。
【问题讨论】:
-
我不确定我是否理解。我认为您的意思是通过以下方式证明:如果我有
array(1:27, c(3, 3, 3)),那么提供它和一个向量c(2,2,2)应该给我相应的项目(在本例中为14),但是对于任意数量的维度?跨度>