Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 第一个括号内的作业和完整作业一样耗时?_R_Copy_Lazy Evaluation - Fatal编程技术网

R 第一个括号内的作业和完整作业一样耗时?

R 第一个括号内的作业和完整作业一样耗时?,r,copy,lazy-evaluation,R,Copy,Lazy Evaluation,关于这一答复: 我们可以看到,在第一次使用改变向量时,[比较 编辑约书亚的评论:下面显示的行为仅限于R-studio!! 为了回答OP的问题,复制的根本原因(正如@MartinMorgan所解释的)是由于a的NAM(2)SEXP对象。如果第一个命令不包含system.time(.),那么a本身不回答您的问题,而是向它添加一些内容:如果您这样做头(a)在上次作业之前,您会发现正在制作副本。请尝试以下操作:system.time(a我无法在32位WinXP上的R-2.15.2或64位Ubuntu上

关于这一答复:

我们可以看到,在第一次使用
改变向量时,[比较

编辑约书亚的评论:下面显示的行为仅限于R-studio!!
为了回答OP的问题,复制的根本原因(正如@MartinMorgan所解释的)是由于
a
的NAM(2)SEXP对象。如果第一个命令不包含
system.time(.)
,那么
a本身不回答您的问题,而是向它添加一些内容:如果您这样做
头(a)
在上次作业之前,您会发现正在制作副本。请尝试以下操作:
system.time(a我无法在32位WinXP上的R-2.15.2或64位Ubuntu上的R-2.15.3中复制这一点。哎呀,这是因为R-studio吗?我现在就试试R64。是的,这是R-studio正在做的。这里的解释是:是的,非常好。可能相关的部分以“但是,如果计算是通过从函数中返回命名值来完成的”开头在一个非常有趣的R-devel线程中,主题是如何/何时将NAMED的值设置为2。
> system.time(a <- rep(1L, 10^8))
   user  system elapsed 
   0.15    0.17    0.31 
> system.time(a[222L] <- 111L)
   user  system elapsed 
   0.26    0.08    0.34 
> system.time(a[333L] <- 111L)
   user  system elapsed 
      0       0       0
> a <- rep(1L, 10)
> .Internal(inspect(a))
@457b840 13 INTSXP g0c4 [NAM(1)] (len=10, tl=0) 1,1,1,1,1,...
> system.time(a <- rep(1L, 10))
[...]
> .Internal(inspect(a))
@4626f88 13 INTSXP g0c4 [NAM(2)] (len=10, tl=0) 1,1,1,1,1,...
> a <- rep(1L, 10^8)
> .Internal(inspect(a))
@7f972b571010 13 INTSXP g0c7 [NAM(1)] (len=100000000, tl=0) 1,1,1,1,1,...
> system.time(a[123L] <- a[321L])
   user  system elapsed 
      0       0       0 
system.time(a <- rep(1L, 10^8))
#    user  system elapsed 
#   0.256   0.263   0.526 
.Internal(inspect(a))
# @10745d000 13 INTSXP g0c7 [NAM(2)] (len=100000000, tl=0) 1,1,1,1,1,...
system.time(a[222L] <- 111L)
#    user  system elapsed 
#   0.299   0.199   0.498 
.Internal(inspect(a))
# @11f1d6000 13 INTSXP g0c7 [NAM(1)] (len=100000000, tl=0) 1,1,1,1,1,...
system.time(a[333L] <- 111L)
#    user  system elapsed 
#       0       0       0 
.Internal(inspect(a))
# @11f1d6000 13 INTSXP g1c7 [MARK,NAM(1)] (len=100000000, tl=0) 1,1,1,1,1,...
system.time(a <- rep(1L, 10^8))
#    user  system elapsed 
#   0.256   0.265   0.588 
> 
.Internal(inspect(a))
# @10745d000 13 INTSXP g0c7 [NAM(2)] (len=100000000, tl=0) 1,1,1,1,1,...

system.time(a[222L] <- 111L)
#    user  system elapsed 
#   0.302   0.204   0.559 

.Internal(inspect(a))
# @11f1d6000 13 INTSXP g0c7 [NAM(2)] (len=100000000, tl=0) 1,1,1,1,1,...

system.time(a[333L] <- 111L)
#    user  system elapsed 
#   0.296   0.208   0.504 
> 
.Internal(inspect(a))
# @10745d000 13 INTSXP g0c7 [NAM(2)] (len=100000000, tl=0) 1,1,1,1,1,...