R局部全局变量

时间:2016-02-16 08:38:33

标签: r global-variables local-variables

我正在尝试更新函数

中的全局变量(矩阵名称:“confusion.mat”)
C:\Projects\WebApplication>dnx ef dbcontext scaffold "Data Source = tcp:random.database.windows.net,1433; Database = MyDatabase; User ID = Username@random; Password = my_password; Encrypt = True; TrustServerCertificate = True;" EntityFramework.MicrosoftSqlServer

数据:

register.hit <-function(categ){
  confusion.mat[categ,categ] = confusion.mat[categ,categ] + 1
  }
sapply(intersection.list,register.hit)

然而,全局变量confusion.mat没有更新(在调试模式下,我注意到函数register.hit中的局部变量confusion.mat被正确更新)。 任何帮助表示赞赏

2 个答案:

答案 0 :(得分:0)

广泛的谷歌搜索后,我发现运营商&lt;&lt; - 在函数范围内分配全局变量 所以我相应地更改了我的代码:

register.hit <-function(categ){
  confusion.mat[categ,categ] <<- confusion.mat[categ,categ] + 1
  }

并且有效

答案 1 :(得分:0)

这是一种实现相同结果的矢量化方法:

confusion.mat <- structure(c(0, 0, 0, 0, 0, 0, 0, 0, 0), .Dim = c(3L, 3L))
confusion.mat[cbind(intersection.list, intersection.list)] <- 
  confusion.mat[cbind(intersection.list, intersection.list)] + 1
#     [,1] [,2] [,3]
#[1,]    1    0    0
#[2,]    0    1    0
#[3,]    0    0    0