【发布时间】:2016-03-22 19:51:12
【问题描述】:
我想在 R 中计算数百个凸包体积,而不必为每个计算创建单独的数据框。
这是一个简化的示例:我目前有一个数据框 df,它有 3 列:Group、X、Y。
Group<-c(rep("Frank",times=6),rep("Greg",times=11),rep("Stacy",times=3),rep("Nancy",times=10))
X<-c(4,5,3,5,7,4,8,23,4,7,5,2,8,5,8,3,6,5,4,6,8,9,2,5,8,3,6,3,3,4)
Y<-c(7,9,3,6,4,8,7,8,6,3,2,3,6,7,4,6,8,9,5,7,8,9,6,5,4,6,7,8,3,6)
df<-data.frame(Group,as.numeric(X),as.numeric(Y))
对于Group 中的每个变量,我想根据df 中的X 和Y 数据计算凸包体积。每个Group 变量都有不同的x,y 点长度。我所做的计算这些卷的漫长路线是为每个Group 制作单独的data.frames。例如:
Frank.frame<-cbind(df$X[df$Group=="Frank"],df$Y[df$Group=="Frank"])
然后我根据该数据计算了凸包体积
library(geometry)
convhulln(Frank.frame, option="FA")$vol
我的问题是:我可以使用原始df 执行所有convhulln 计算,还是需要我单独分析这些单独的Groups?
我试图循环这个,但我无法识别各个分组,而是得到了总的凸包体积。
for(i in 1:length(unique(df$Group))){
z[i]<-convhulln(cbind(df$X,df$Y),option="FA")$vol
}
【问题讨论】: