Arrays 如何使apply()在函数的一个参数(而不是第一个)中传递对象?

Arrays 如何使apply()在函数的一个参数(而不是第一个)中传递对象?,arrays,r,apply,Arrays,R,Apply,我有一些高维数组,希望对它们应用一些函数。问题是我无法告诉apply()(或apply家族中的类似对象)传递函数的对象不在函数的第一个参数中 下面是一个简单的例子: data <- c(1,2,3,4,5) myarray <- array(data,dim=c(5,5,2,2),dimnames=list(NULL, paste("col",1:5,sep=""), paste("matrix",1:2,sep=""), paste("slice",1:2,sep=""))) 如

我有一些高维数组,希望对它们应用一些函数。问题是我无法告诉apply()(或apply家族中的类似对象)传递函数的对象不在函数的第一个参数中

下面是一个简单的例子:

data <- c(1,2,3,4,5)
myarray <- array(data,dim=c(5,5,2,2),dimnames=list(NULL,
paste("col",1:5,sep=""),
paste("matrix",1:2,sep=""),
paste("slice",1:2,sep="")))
如果我想让apply将函数传递给对象“myarray”,我需要指定参数(“数据”)所在的位置。我试过了,但没有结果:

apply(myarray,c(3,4),function,arg1,arg2,arg3,arg4)

提前谢谢

如果我理解了您的权利,您需要指定非迭代参数。例如:

func <- function(a,b,c){
    return(a*b + c)
}

apply(FUN=func,a=10,b=10,someObject)

这可能会更好

谢谢!我指定了每个参数,除了我想要迭代的那个参数,并且工作得几乎很好。输出不尊重应用程序中的c(3,4)边距,而是返回了一个低维数组,但由于我想要的数据在那里,在数组()格式化后,一切都正常:)我还尝试了另一种可行但风险极大的策略:检查函数(F2键),创建一个克隆函数,将所需的to iterate参数放在第一位。但是,如果您不想指定所有其他参数,此替代方法(克隆函数之一)可能会很有用
func <- function(a,b,c){
    return(a*b + c)
}

apply(FUN=func,a=10,b=10,someObject)
unlist(lapply(FUN=func,a=10,b=10,someObject))