使用单个向量A = c(1,2,3,4,5)
,我可以写
sapply(A, function(a) mean(A[-a]))
计算五个均值:没有第一个元素的 A 的均值、没有第二个元素的 A 的均值等。
我想同时对两个或多个向量进行这样的留一操作。例如,使用 B <- c(6,7,8,9,10)
,我想我可以输入
myFunc <- function(a, b){return( c(mean(A[-a]), mean(B[-b])) )}
mapply(myFunc, A, B)
但这仅计算 A 的留一法平均值:
[,1] [,2] [,3] [,4] [,5]
[1,] 3.5 3.25 3 2.75 2.5
[2,] 8.0 8.00 8 8.00 8.0
并为 B 输出一行 8.0s。我做错了什么?
最佳答案
在第一个向量“A”中,值与序列相同。因此,当我们使用该值进行索引并删除时,它会删除相应的值。在第二个向量“B”中,情况并非如此,即 B[-6]
或 B[-7]
仍然给出整个向量。相反,循环遍历序列
mapply(myFunc, seq_along(A), seq_along(B))
关于r - 使用 mapply() 为多个参数留出一个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54829025/