Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 使用mapply按带函数的向量变换向量元素_R_Mapply - Fatal编程技术网

R 使用mapply按带函数的向量变换向量元素

R 使用mapply按带函数的向量变换向量元素,r,mapply,R,Mapply,对mapply的使用有疑问 考虑以下两种情况: 案例1显示了我希望做的事情的简化示例。我使用mapply使用vector trans中存储的函数来转换向量k元素。这是有效的() 在案例2中我希望做类似的事情,但是,我需要额外的函数参数(这里,存储在a中)。但是我可能需要n个函数参数。我在这个例子中得到的是一个3x3矩阵,在对角线上有预期的结果。我只想要对角线的计算输出。怎么做 k <- seq(1:3) # Case 1 ----------------------------------

mapply
的使用有疑问

考虑以下两种情况: 案例1显示了我希望做的事情的简化示例。我使用mapply使用vector trans中存储的函数来转换向量k元素。这是有效的()

案例2中我希望做类似的事情,但是,我需要额外的函数参数(这里,存储在a中)。但是我可能需要n个函数参数。我在这个例子中得到的是一个3x3矩阵,在对角线上有预期的结果。我只想要对角线的计算输出。怎么做

k <- seq(1:3)
# Case 1 -----------------------------------------------------------------------
trans <- c(function(x) x, function(x) 1/x, function(x) x^2)             
# transform vektors elementwise with functions in a "transform" vektor
ktrans   <- mapply(function(f, x) f(x), trans, k)

# 2 -----------------------------------------------------------------------
k <- seq(1:3)
a <- rep(2,3)
transa <- c(function(x,a) x*a, function(x,a) 1/x*a, function(x,a) x^2*a)
ktransa   <- mapply(function(f, x,a) f(x,a), transa, MoreArgs= list(x = k, a= a))

> diag(ktransa)
[1]  2  1 18
k解决方案:

我没有使用列表将参数发送到函数,而是显式地:

# 3 --- Example with n arguments -----------------------------------
k <- seq(1:3)
a <- rep(2,3)
transa <- c(function(x,a) x*a, function(x,a) 1/x*a, function(x,a) x^2*a)
ktransa   <- mapply(function(f, x, a) f(x,a), transa,x = k , a = a)
#3--具有n个参数的示例-----------------------------------

k除非我删除
a
,否则案例1不起作用,否则我在函数(f,x)中得到
错误:未使用的参数(点[[3]][[1]])
。你到底想做什么?在案例2中,您将一个向量输入到
mappy
中,该向量应该输出一个矩阵w/each#In
k
以各种方式变换。也就是说,3个数字每转换3次=一个3x3矩阵。为什么不在函数调用中提供额外的参数?i、 e mapply(函数(f,x)f(x,arg1,arg2,arg3),transa)?我希望mapply返回当前mapply输出的diag向量。也就是说,向量
transa[I]
中的函数使用
k[I]
a[I]
作为参数,输出则是向量。我从1到
长度(transa)
@Karl:这不是我在案例2中所做的吗?