长球体的体积
Volume of a prolate spheroid
我有一个长和宽为扁球体的数据集:
df <- data.frame(nr = c(1, 2, 3), length = c(4, 5, 3), width = c(2, 2, 1))
df
现在我想用卷做一个额外的列。我使用了公式 V = 4/3*pi*a²b(a 和 b = 1/2 的长度和宽度):
df$volume <- (4/3)*pi*(df$length/2)^2*(df$width/2)
这行得通,但我想知道 R 中是否有内置公式?
我不知道有这样的功能,看到它在某处实现我会感到有点惊讶,只是因为它是一个有点深奥的几何学东西。 (每个深奥的 stats 概念都已在 R 或包中的某个地方实现,但深奥的 geometry 概念要少得多,因为 R 不是设计的工具特别考虑到几何应用。)
就是说:不管这样的东西是否已经在某个地方实现了,为什么不直接用你给的代码写一个自定义函数呢?
spheroid_vol <- function(length, width){
4/3 * pi * (length/2)^2 * (width/2)^2
}
> spheroid_vol(df$length, df$width)
# 16.755161 26.179939 2.356194
您还可以通过检查以确保输入为非空等方式使它成为一个更好的功能——但这可能值得也可能不值得付出努力,具体取决于您要用它做什么。
我有一个长和宽为扁球体的数据集:
df <- data.frame(nr = c(1, 2, 3), length = c(4, 5, 3), width = c(2, 2, 1))
df
现在我想用卷做一个额外的列。我使用了公式 V = 4/3*pi*a²b(a 和 b = 1/2 的长度和宽度):
df$volume <- (4/3)*pi*(df$length/2)^2*(df$width/2)
这行得通,但我想知道 R 中是否有内置公式?
我不知道有这样的功能,看到它在某处实现我会感到有点惊讶,只是因为它是一个有点深奥的几何学东西。 (每个深奥的 stats 概念都已在 R 或包中的某个地方实现,但深奥的 geometry 概念要少得多,因为 R 不是设计的工具特别考虑到几何应用。)
就是说:不管这样的东西是否已经在某个地方实现了,为什么不直接用你给的代码写一个自定义函数呢?
spheroid_vol <- function(length, width){
4/3 * pi * (length/2)^2 * (width/2)^2
}
> spheroid_vol(df$length, df$width)
# 16.755161 26.179939 2.356194
您还可以通过检查以确保输入为非空等方式使它成为一个更好的功能——但这可能值得也可能不值得付出努力,具体取决于您要用它做什么。