R中的截锥体积

时间:2017-11-28 12:33:09

标签: r vectorization

我希望看到一种估算锥度不规则锥体的有效方法。我们在这些向量中有锥体直径和高度:

D = c(30, 29, 29, 27) #diameter (cm) vector of the cone
deltah = c(10, 10, 10) #delta height, cm, may vary

当前解决方案涉及使用每个锥形截面的截锥公式的for循环(在R中):

conevol=NULL
for(i in 2:length(D)){
   conevol[(i-1)] =  (D[i]^2 + D[(i-1)]^2 + D[i]*D[(i-1)]) *deltah[(i-1)]*pi/3
}
sum(conevol)
#[1] 78403.68

那么:对矢量化方法有什么想法吗?

1 个答案:

答案 0 :(得分:2)

根本不需要使用for循环,只需创建一个向量并对其应用操作:

> D = c(30, 29, 29, 27) 
> deltah = c(10, 10, 10)

> i=2:length(D)
> i
[1] 2 3 4
> i-1
[1] 1 2 3

> conevol =  (D[i]^2 + D[(i-1)]^2 + D[i]*D[(i-1)]) *deltah[(i-1)]*pi/3
> conevol
[1] 27342.33 26420.79 24640.56
> sum(conevol)
[1] 78403.68