在函数中更改全局向量的元素

时间:2016-07-13 07:24:00

标签: r global-variables assign

我在全局环境中有一个向量,我想创建一个只修改该向量的一个元素的函数。问题是矢量太大而标准方法计算时间太长。看看我已经拥有的功能,它们都太慢了。

x <- rep(0, 1e8)
f1 <- function(n,a) {
  x <- x      # loads the vector to current environment
  x[n] <- a   # changes the position in current environment
  x <<- x     # saves the vector to global environment
}
f2 <- function(n,a) {
  x[n] <<- a  # changes the vector element in global environment
}

system.time(f1(1,1))   # 0.34
system.time(f2(2,1))   # 0.30
system.time(x[3] <- 1) # 0.00

我正在寻找类似的东西:

assign('x[4]', 1, .GlobalEnv)

1 个答案:

答案 0 :(得分:1)

对我来说,你可以用$(document).on('click', '.add_item', function() { var clone = pd.clone().prop('id', 'product_' + id_count); $(this).prevAll('.product_data').first().after(clone.hide()); clone.slideDown('fast'); id_count++; }); 包来解决这个问题,因为它通过引用操作对象。

例如:

data.table

您可以随时使用library(data.table) data <- data.table(x=rep(0, 1e8)) f3 <- function(n,a){ data[n,x:=a] return(TRUE) } system.time(f3(2,1)) # 0 print(data) x 1: 0 2: 1 3: 0 4: 0 ...

x检索为矢量