通过循环R命名变量
我目前正在研究一个函数,它将返回点和p簇之间的距离通过循环R命名变量,r,loops,variables,rstudio,cluster-analysis,R,Loops,Variables,Rstudio,Cluster Analysis,我目前正在研究一个函数,它将返回点和p簇之间的距离 which_cluster<-function(coord){ cluster<-get_cluster(data) # return a matrix nbr_clusters=nrow(cluster) nbr_dim=ncol(cluster) liste<-c() for(i in 1:nbr_clusters){ dist_c_i=0 for (j in nbr_dim){ paste('ve
which_cluster<-function(coord){
cluster<-get_cluster(data) # return a matrix
nbr_clusters=nrow(cluster)
nbr_dim=ncol(cluster)
liste<-c()
for(i in 1:nbr_clusters){
dist_c_i=0
for (j in nbr_dim){
paste('vec_', i, sep = '')
dim_j_c_i=cluster[i,j]
dist_c_i<-dist_c_i+ (dim_j_c_i-coord[i])^2
}
dist_c_i<-sqrt(dist_c_i)
liste<-liste[,dist_c_i]
}
return(liste)
}
哪个集群在paste0()之后使用assign()
:
不要
声明过多的变量是缓慢的,而且是不可管理的
相反,使用列表和矩阵
当您试图做距离矩阵时,将其存储为矩阵,由I和j索引,即dist[I,j]
Hi!你能提供一个你的数据样本吗?以及一个你期望得到的输出示例Get_cluster(数据)返回包含群集中心位置的矩阵:Dim 1 Dim 2 Dim 3 Dim 4 Dim 5 1-0.2421963-0.02219216 1.1548797 6.187503558 4.01138314 2 1.8136751 7.89237995-0.1976802 1.029745037-1.66337555 3 0.5433915-0.20207333-0.1827094-0.003705857-0.02186797 4-1.0740043 0.17493668 0.3216816-0.184568336-0.02079380和get(粘贴0(“dim_uj”,“_c_uu”),当在一个Thnak的右侧向您征求意见时,我使用的矩阵不大。最多5列5行,这就是为什么我不在乎使用2个“for loops”@K.Youce.我考虑的不是内存消耗,而是速度。另外,你的代码对其他读者来说会有点神秘。当你需要索引时,你使用向量和数组,而不是变量集合。你以前使用过SAS吗?没有。我已经学习R一周了。这段代码是为了获得欧几里得距离
assign(paste0("dim_", j, "_c_", i), cluster[i,j])