gpt4 book ai didi

r - 从函数返回是否会创建一个额外的副本?

转载 作者:行者123 更新时间:2023-12-04 09:42:35 25 4
gpt4 key购买 nike

在下面的函数中:

DownloadRawData <- function(fileurl, filename)
{
download.file(fileurl, destfile=filename)
dataset = read.csv(filename)
return(dataset)
}
myDataSet <- downloadRawData(myurl, myname)

我们是要在函数返回时在内存中分配数据集的 2 个副本,还是通过引用进行分配。

本帖 R, deep vs. shallow copies, pass by reference给一些提示,但我不太清楚。

另一个类似的例子是:
f <- function(n)
{
v <- c(1:n)
v <- sample(v,n)
return(v)
}
myV <- f(10000)

最佳答案

你可以看看如何return()通过查看 src/main/eval.c 在内部实现在 R 源中。功能do_return() , 也叫 eval() .只有 SEXP 被传递,这些 are pointers .

所以答案是,没有创建返回值的额外副本。它基本上被优化掉了。

关于r - 从函数返回是否会创建一个额外的副本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14794546/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com