矩阵代码简化和概括

发布于 2025-01-22 14:00:58 字数 968 浏览 4 评论 0原文

祝美好的一天,请我需要帮助,以试图对任何矩阵进行概括性数据政治民主 lavaan 库中都可以使用,

我尝试了

library(lavaan)
R<-chol(cor(PoliticalDemocracy[1:8]))
diag(R)<-NA
R<-round(R,3)
R
R[R==0]<-NA
R

d<-matrix(NA,nrow(R),ncol(R))
d[,1]<-acos(R[1,])
d


d[,2]<-acos(R[2,]/sin(d[,1]))
d[,3]<-acos(R[3,]/sin(d[,1])*sin(d[,2]))
d[,4]<-acos(R[4,]/sin(d[,1])*sin(d[,2])*sin(d[,3]))
d[,5]<-acos(R[5,]/sin(d[,1])*sin(d[,2])*sin(d[,3])*sin(d[,4]))
d[,6]<-acos(R[6,]/sin(d[,1])*sin(d[,2])*sin(d[,3])*sin(d[,4])*sin(d[,5]))
d[,7]<-acos(R[7,]/sin(d[,1])*sin(d[,2])*sin(d[,3])*sin(d[,4])*sin(d[,5])*sin(d[,6]))
d[,8]<-acos(R[8,]/sin(d[,1])*sin(d[,2])*sin(d[,3])*sin(d[,4])*sin(d[,5])*sin(d[,6])*sin(d[,7]))

我尝试使用循环但有错误的方法和一个空矩阵D


d<-matrix(NA,nrow(R),ncol(R))
d[,1]<-acos(R[1,])
d


for (i in 2:nrow(d)){
  d[,i]<-acos(R[i,])/prod(sin(d[,i-1]))
  d
}
d

@allancameron

Good day, Please i need assistance trying to generalize this code for any matrix the data PoliticalDemocracy is available in the lavaan library

What I tried

library(lavaan)
R<-chol(cor(PoliticalDemocracy[1:8]))
diag(R)<-NA
R<-round(R,3)
R
R[R==0]<-NA
R

d<-matrix(NA,nrow(R),ncol(R))
d[,1]<-acos(R[1,])
d


d[,2]<-acos(R[2,]/sin(d[,1]))
d[,3]<-acos(R[3,]/sin(d[,1])*sin(d[,2]))
d[,4]<-acos(R[4,]/sin(d[,1])*sin(d[,2])*sin(d[,3]))
d[,5]<-acos(R[5,]/sin(d[,1])*sin(d[,2])*sin(d[,3])*sin(d[,4]))
d[,6]<-acos(R[6,]/sin(d[,1])*sin(d[,2])*sin(d[,3])*sin(d[,4])*sin(d[,5]))
d[,7]<-acos(R[7,]/sin(d[,1])*sin(d[,2])*sin(d[,3])*sin(d[,4])*sin(d[,5])*sin(d[,6]))
d[,8]<-acos(R[8,]/sin(d[,1])*sin(d[,2])*sin(d[,3])*sin(d[,4])*sin(d[,5])*sin(d[,6])*sin(d[,7]))

I tried using the loop but was having errors and an empty matrix d


d<-matrix(NA,nrow(R),ncol(R))
d[,1]<-acos(R[1,])
d


for (i in 2:nrow(d)){
  d[,i]<-acos(R[i,])/prod(sin(d[,i-1]))
  d
}
d

@AllanCameron

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

℡Ms空城旧梦 2025-01-29 14:00:58

您可以使用RELAD函数,如下所示

(Reduce(function(x, y) 
  cbind(x, acos(y/matrixStats::rowProds(sin(x)))),
  data.frame(t(R)), init = matrix(rep(pi/2), nrow(R)))[,-1])

You could use Reduce function as shown below

(Reduce(function(x, y) 
  cbind(x, acos(y/matrixStats::rowProds(sin(x)))),
  data.frame(t(R)), init = matrix(rep(pi/2), nrow(R)))[,-1])
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文