怎么在R语言中嵌套列表

  介绍

这期内容当中小编将会给大家带来有关怎么在R语言中嵌套列表,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

第一步:

生成数据集的函数已经给出了.20个数据就是run20次~因为是随机生成的,最后得到的每个数据集都不相同。然后把这20个数据集都存在一个列表里~

art2  & lt;作用;函数(){   x1 才能;& lt;作用;rnorm (20)   y1 才能;& lt;作用;rnorm (20)   x2 才能;& lt;作用;rnorm(20,意味着=10)   y2 才能;& lt;作用;rnorm (20)   x3 才能;& lt;作用;runif (100、-20、30)   y3 才能;& lt;作用;runif (100、20、40)   clusterdata2 才能;& lt;作用;cbind (c (x1, x2, x3), c (y1、y2、y3))   cvec 才能;& lt;作用;c(代表(20),代表(20),代表(3100))   out 才能;& lt;作用;列表(data=https://www.yisu.com/zixun/clusterdata2, cvec=cvec)   出   }   数据集<附些()   (我在1:20){   数据集[[我]]<- art2 ()   }

为什么我的数据集要包两层,是[[我]]?其实这里就有列表的嵌套了。看我在生成的函数里已经有一个列表,里面包含两个元素,一个是美元数据:生成的原始数据;另一个是$ cvec:原始数据对应的实际分类,所以我想要个大的列表把这20个列表都包含在内,就得来个嵌套~两个框框——[[我]]就是两层!(我刚刚突然想到[[[我]]]会不会是三层啊?…我没试过也,因为每个循环都是新增一层列表,不会直接增两层,不然有层为空就会报错,哎呦我表述好难,先继续往下吧~ ~

注。如果想要提取第5次生成的结果,就数据集[[5]],当然这里面还包含两个元素:原始数据数据和实际分类。如果想提取里面的原始数据数据,就数据集[[5]]$ data,想提取里面的实际分类,则是数据集[[5]]cvec美元。想提取全部20次的结果:直接数据集。如果!想要提取20次结果里的原始数据,就没那么直接了。得用的循环从1 ~ 20来一个数据集[[我]]美元dat逐一取出来。这个应该很好理解,因为小列表里是包含两种元素,外面嵌套列表的才是重复20次。

第二步:

然后就是对这个大的数据集运行K - means, K=2 ~ 10。这里有两个循环,一个是我首先要把数据从1 ~ 20走一遍,然后里面每个数据集我都要从K=2 ~ 10计算K - means的结果,只为循环很好写,具体的框架大致就是这样:“? ? ?“的地方是需要思考滴

for  (k 拷贝;2:10){   for 才能;(小姐:拷贝1:20){   ,,,? ? ? & lt;作用;kmeans(数据集[[我]]$ data, k, nstart=50)   ,,,? ? ?   ,,}   }

k - means的语句里同时包含了我和k,所以这个结果会是一个嵌套的列表。照我这样写的循环,里面那层就是我=1 ~ 20日外面那层是k=2 ~ 10,所以是当k=2时,把20个数据集循环一遍,然后k=3,再循环……直到k=10,所以我们要先保存固定k时的我=1 ~ 20的跑出来的结果,第一个“? ? ?“就得包括我,并且跟k无关。而且因为kmeans的结果返回的个列表,里面包含了各种元素:集群美元,美元大小,等等。所以这跟上面数据集的保存一样,得是[[我]],两层!

第一个“? ? ?“已经解决了,假设是ks[[我]],保存了当k固定时循环i=1 ~ 20的结果。现在我们要循环k=2 ~ 10,等于在列表ks的外面再嵌套一个列表,是关于k循环的,跟我已经没什么关系了。所以下一个“? ? ?“就得是kmean [[k]] & lt; ks。

<强>结果就是这样的~

kmean  & lt;作用;列表()   ks  & lt;作用;列表()   for  (k 拷贝2:10){   for 才能;(小姐:拷贝1:20){   ,,,ks[[我]],& lt;作用;kmeans(数据集[[我]]$ data, k, nstart=50)   ,,,kmean [[k]] & lt; ks   ,,}   }

现在讲讲怎么提取里面的数值.kmean是一个三层的列表。最外面那层是跟k有关的,中间那层是跟我有关,里面那层是k - means的输出作为一个列表。

所以kmean [[k]], k=2 ~ 10,是当k=k时20次k - means的结果。

如果想取k=2,第5个数据集的k - means结果,就是kmean[[2]][[5]],如果想取k=4,第1个数据集的k - means得到的分类结果集群:kmean[[4]][[1]]美元集群。

<强>完成了!这是我个人在实际操作过程中的一个总结,所以如果有什么问题欢迎一起来讨论~

进一步研究——

在析因实验设计里我们经常会考虑多个因素因子,每个因子考虑几个水平。算了我直接拿我的例子来讲好了…在我最近做的事情里,要生成像开头一样的分类数据生成随机集群。

因为是因子实验设计,所以我考虑了三个因子:(1)集群的数量每个数据中有几个群组,像开头的例子就有3个,这里我定的级别是2、3、5;(2)在每个集群的数量每群组里有多少点,定的是25100225,和(3)分离度群组和群组之间相隔的远还是近,函数里面有个sepVal可以定义,我定的是0.01和0.021;最后是重复2遍。把所有结果存到一个列表里

怎么在R语言中嵌套列表