Addmargins在R中找不到函数

时间:2013-08-03 16:16:11

标签: r scope eval

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变量,如第一个示例所示。

1 个答案:

答案 0 :(得分:1)

请尝试以下方法:

foo <- function(x) {

  bar <- function(y) sum(y)
  func <- list(new=bar)
  addmargins(x, c(1), func)
}
foo(matrix(1:20, nrow=4))