【发布时间】:2019-10-21 08:38:49
【问题描述】:
我已经编写了以下函数,我想计算我输入的 2 个向量之间的角度
theta <- function(a,b) {
angle <- (180/pi)*acos( sum(a*b) / ( sqrt(sum(a * a)) * sqrt(sum(b * b)) ) )
return(angle)
}
我正在尝试将此功能分别应用于 5 个类似的数据帧。对于每个数据帧,每一行都存储有关观察的信息,数据帧的 4 列代表定义每个观察的属性的 4D 向量的 4 个坐标
对于所有行,我想找到从 4 列中提取的向量 a 和向量 b(我希望指定的另一个 4-D 向量)之间的角度。每个数据帧的向量 b 都不同。
我正在使用“apply”方法并调用我之前创建的函数来计算两个向量之间的角度,并将其存储在一个名为“angle”的新列中
df$angle <- apply(df[,c(7:10)],1, theta))
但是,我不确定如何使用 apply 方法,以便在调用函数“theta”时手动指定角度 b 的向量。这就是为什么我不得不在定义函数时预先定义向量 b 的值,如下所示:
theta <- function(a,b) {
b= c(1,2,3,4)
angle <- (180/pi)*acos( sum(a*b) / ( sqrt(sum(a * a)) * sqrt(sum(b * b)) ) )
return(angle)
}
问题是,因为我有 5 个不同的数据帧,其中有 5 个不同的向量 b,所以在将函数应用到数据帧之前,我必须每次都用一个新的 b 定义函数。
任何帮助将不胜感激!
【问题讨论】: