1

R 中的addmargins函数无法在本地范围内找到函数。我的意思是这不起作用:

foo <- function(x) {
  bar <- function(y) sum(y)
  addmargins(x, c(1), list(new=bar))
}
foo(matrix(1:20, nrow=4))
# => Error in eval(expr, envir, enclos) : object 'bar' not found

这确实:

bar <- function(y) sum(y)
foo <- function(x) {
  addmargins(x, c(1), list(new=bar))
}
foo(matrix(1:20, nrow=4))
# =>
#      [,1] [,2] [,3] [,4] [,5]
# [1,]    1    5    9   13   17
# [2,]    2    6   10   14   18
# [3,]    3    7   11   15   19
# [4,]    4    8   12   16   20
# [5,]   10   26   42   58   74

如第一个示例所示,我如何addmargins在本地范围内使用变量。

4

1 回答 1

1

请尝试以下操作:

foo <- function(x) {

  bar <- function(y) sum(y)
  func <- list(new=bar)
  addmargins(x, c(1), func)
}
foo(matrix(1:20, nrow=4))
于 2013-08-03T16:26:28.470 回答