【发布时间】:2013-04-16 16:39:02
【问题描述】:
我正在编写一个给定路径的函数,它将查找文件夹中的所有文件,并将所有 csv 读入一个 xts 对象。这些文件都有相同的日期,我希望每个文件成为 xts 中的另一列。我得到了以下函数,但在 temp[, 1] 中出现错误:维数不正确。我做错了什么?
make.libor.xts <- function(folder){
filenames <- list.files(path=folder, full.names=TRUE)
tables <- lapply(filenames, function(x){as.xts(read.zoo(x, sep=",", format="%Y-%m-%d", header=TRUE))})
cnames <- lapply(filenames, function(x){basename(x)})
myxts <- tables[1]
names(myxts) <- cnames[1]
if(length(filenames)>1){
for(i in 2:length(filenames)){
temp <- tables[i]
myxts$cnames[i] <- temp[,1]
}
}
return(myxts)
}
【问题讨论】:
-
我的猜测是你想要双括号来子集列表。例如
tables[[1]],不是tables[1] -
感谢帮助,现在它用 1 轰炸:在 myxts$cnames[i]
-
是的,因为那不是有效的语法。试试
cbind -
我绕过它,将它添加到名为 temp 的列中,然后立即更改名称。搞定了,谢谢你的帮助^