我在全局环境中有一个向量,我想创建一个只修改该向量的一个元素的函数。问题是矢量太大而标准方法计算时间太长。看看我已经拥有的功能,它们都太慢了。
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)
答案 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
检索为矢量