Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过循环R命名变量_R_Loops_Variables_Rstudio_Cluster Analysis - Fatal编程技术网

通过循环R命名变量

通过循环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

我目前正在研究一个函数,它将返回点和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('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])