gpt4 book ai didi

r - 代码构建过程和嵌入式功能

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

首先,这个问题不是关于试图解决特定问题。作为 R 的新手,我也在努力创建更高效​​的代码和代码构建过程。了解不同的编程方法甚至风格是这个问题背后的原因。

以下是三种编码方式:

首先是示例数据:

stackexample <- c(52,50,45,49.5,50.5,12,10,14,11.5,12,110,108,106,101,104)
dim(stackexample)<- c(5,3)

方法一:在函数中进行数学运算,不定义任何对象
 ertimesIVCV1 <- function (x) 
{ (solve(var(log((x[-nrow(x),])/(x[-1,])))))%*%
((1+(log(x[1,]/(x)[nrow(x),])))^(1/nrow(x))-1)}

ertimesIVCV1(stackexample)

方法二:在函数中定义对象,然后操作这些对象
    ertimesIVCV2 <- function (x) 
{ IVCV <- solve(var(log((x[-nrow(x),])/(x[-1,]))));
retsexcess <- (1+(log(x[1,]/(x)[nrow(x),])))^(1/nrow(x))-1;
IVCV%*%retsexcess}

ertimesIVCV2(stackexample)

方法三:定义多个函数并在“summary like”函数中调用这些函数
IVCV <- function (x) {solve(var(log((x[-nrow(x),])/(x[-1,]))))}
retsexcess <- function(x) (1+(log(x[1,]/(x)[nrow(x),])))^(1/nrow(x))-1
ertimesIVCV3 <- function (x) {IVCV(x)%*%retsexcess(x)}

ertimesIVCV3(stackexample)

所以都产生相同的答案:
           [,1]
[1,] 1.4430104
[2,] -0.1365155
[3,] 11.8088378

但正如你所看到的三种不同的方法。

是否存在最佳嵌入式函数数量这样的事情,还是我们应该始终尝试明确列出所有数学?函数内有多少层函数是最优的?两种方法在计算速度上是否优越?这有经验法则吗?你如何看待这个问题?欢迎任何意见或建议或链接,谢谢!

黑麦

最佳答案

如果目标是时间效率,那么提供的示例的答案是“谁在乎?”。函数调用的开销并不是决定效率的因素。您可能应该关注其他问题,例如用户理解和维护代码的能力。

 require(rbenchmark)
benchmark(replications=100, ver1= ertimesIVCV1(stackexample),
ver2=ertimesIVCV2(stackexample),
ver3 = ertimesIVCV3(stackexample) )
# ------------------
test replications elapsed relative user.self sys.self user.child sys.child
1 ver1 100 0.030 1.000000 0.03 0 0 0
2 ver2 100 0.030 1.000000 0.03 0 0 0
3 ver3 100 0.031 1.033333 0.03 0 0 0

关于r - 代码构建过程和嵌入式功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9488494/

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