首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用循环迭代一堆代码长达15年?

如何使用循环迭代一堆代码长达15年?
EN

Stack Overflow用户
提问于 2021-02-07 23:08:02
回答 1查看 91关注 0票数 0

我是Stack社区中的新手,也是R.,我试图在一年的代码之后得到三个具体的值,也就是2000年。所以,我得到了一排三列。然而,我需要得到这些具体的值作为输出14年,直到2014年。我如何才能以一种不混乱的方式循环,需要一些建议。我正在尝试以下代码:

代码语言:javascript
复制
CVA <-data.frame()
for(i in 2000:2014) {
  
  
D.2000 <-  filter(Deu.niot.new, ...1==i)
D.dom.2000 <-filter(Deu.2000,...4=="Domestic")

D.imp.2000 <-filter(Deu.2000,...4=="Imports")


D.ndom.2000 <-select(Deu.2000.dom,-(...61:...67))
D.nimp.2000 <-select(Deu.2000.imp,-(...61:...67)) 

等等.(更多代码)

然后,我需要下面的一个作为我的最终结果:

代码语言:javascript
复制
CVA [[i,]]<-cbind(cva.agri.2000,cva.manu.2000,cva.ser.2000)

这意味着我需要多创建14行,并使用for循环创建3列。使用上面的代码,我刚刚得到了2000年的数值。我需要输出作为data.frame。

任何暗示或建议都是有帮助的!

我使用dput来显示我的数据结构,虽然看起来很混乱:

结构(...1=c(2000年、2000年、2000年、2000年、2000年、2000年、2000年、2000年、2000年、2000年、2000年、2000年)、...2 = c("A01“、"A02”、"A03“、"B”、"C10-C12“、"C13-C15”、"C16“、"C17”、"C18“、"C19")、...3 =c(”作物和动物生产、狩猎及相关服务活动“、”林业和伐木“、”渔业和水产养殖“,“采矿和采石”、“食品、饮料和烟草制品的制造”、“纺织品、服装和皮革制品的制造”、“木材及木材和软木制品(家具除外)的制造”;47.5892951388691、22.4047547307701、31.3319695906172、444.595589525748)、...6 = c(82.985934075375、417.382557034188、0、0.353736300347672、1.95091900568706、1.19359373503498、68.3727666976661、2.95275151914329、4.46816919858237、12.3444402345904)、...7 = c(0.0148890463411341、0.0168962782166389、4.495175384816、0.03023562320195、0.3786066055515736、9.08182031762、1.070076240345、1.26467070570843、0.905244246509581、2.44538655119)、...8 =(435812.45814312、28968655515736、9.08182032551762、1.07007663240345、1.26467070570843、0.905244246509581、2.445386555119)、...8=(435812.812414312、289136581855818218528558)。...9 = c(17952.563202823,5.25931399212,22.4131588651991,116.814290718508,14706.3043351145,63.77989250888,149.697280644864,1269.36851882589,239.087006514138,345.705681202278),...10 = c(52.8680776105079,0.980236672662672,0.00396924705354,18.0442003449513,81.890380752962,1623.56216722411,28.8605439638297,193.373586861434,206.014971131385,61.8673029946462 ),row.names = c(NA,-10L),class = c("tbl_df","tbl","data.frame"))

这里只有10行可见,因此数据仅用于2000年。然而,数据框架由15年(2000年至2014年)组成。

的输出应该类似于:

2001年值

因此,我需要存储输出的三个值,每年作为最终输出。所以,15行有三列。

EN

回答 1

Stack Overflow用户

发布于 2021-02-08 02:32:27

你有像...1...2这样的列名吗?导入数据时可能会出现一些问题。

尽管如此,您还是可以使用拆分-应用-组合方法。

代码语言:javascript
复制
do.call(rbind, lapply(split(Deu.niot.new, Deu.niot.new$`...1`), function(x) {
  #x is the dataframe for each year
  #So this step (D.2000 <-  filter(Deu.niot.new, ...1==i)) is replaced with `x`.
  D.dom.2000 <-filter(Deu.2000,...4=="Domestic")
  D.imp.2000 <-filter(Deu.2000,...4=="Imports")
  #...
  #...
  D.ndom.2000 <-select(Deu.2000.dom,-(...61:...67))
  D.nimp.2000 <-select(Deu.2000.imp,-(...61:...67)) 
  #...
  #...
  cbind(cva.agri.2000,cva.manu.2000,cva.ser.2000)
})) -> CVA

CVA
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66094056

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档