我有一些'xts'对象,将近600个,我想将它们合并为一个'xts'对象。合并很多xts对象
这些对象的名称类似于mfi0,mfi1,mfi2,...。 我可以写几个对象,如
a<-merge(mfi0,mfi1,mfi2)
合并命令,但我的问题是,我不能写600个对象loop
或lapply
,包含字符串“MFI”和一个数字,我想paste
但不能写。
我有一些'xts'对象,将近600个,我想将它们合并为一个'xts'对象。合并很多xts对象
这些对象的名称类似于mfi0,mfi1,mfi2,...。 我可以写几个对象,如
a<-merge(mfi0,mfi1,mfi2)
合并命令,但我的问题是,我不能写600个对象loop
或lapply
,包含字符串“MFI”和一个数字,我想paste
但不能写。
这些物体从哪里来?最好在生成过程中使用一个列表而不是600个独立的变量。因此,代替mfi0
,mfi1
,...,mfi600
,您应该有mfi[1]
,mfi[2]
,...,mfi[600]
。
让您的所有数据帮助处理它。合并过程现在简单得多使用自己的合并命令:
merged_mfi <- do.call(merge, mfi)
或使用合并命令只处理两个对象(即将R合并为data.frames):
merged_mfi <- Reduce(merge, mfi[2:length(mfi)], mfi[1])
我想计算636个代理商的货币流通指数(MFI),我用pdfetch软件包'sp < - pdfetch_YAHOO(标识符[1:636],c(“high”,“low”,“close”,“从“as.Date”(“2012-01-01”)到= as.Date(“2016-12-30”)'',然后我使用TTR包中的MFI,我写了两个函数'HLC < (i){sp [,(4+ i + 4)}} (i,0,636) (nam,MFI(HLC(i),Volume(i) ),14)) } ' – linmu
您可以在初始化mfi < - list之后使用mfi [i] < - MFI(...)来代替'assign(nam,MFI(...))' ()' – Pieter
几乎在任何情况下,在执行哟时生成变量名是个坏习惯你的代码。在这种情况下使用列表,数组,矩阵,数据框架,集合,字典或任何类似的数据结构。 – Pieter
' obj < - paste0(“mfi”,1:600); obj_list < - lapply(obj,get); do.call(merge,obj_list)' –
或者,'code < - paste0(“merge(”,paste0(“mfi”,1:600,collapse =“,”),“)”); eval(parse(text = code))' –
它确实有效。非常感谢你。 – linmu