在名为c:/ files的目录中更新了大量文件。这些文件是R数据文件,其中包含R对象。当我加载这些文件时,我得到了包含数据的不同对象。例如,如果我加载了opening.R文件,我会得到诸如opening.stock,opening.options,opening.bonds等对象。我喜欢加载每个.R文件并浏览它们并根据对象创建图像它们作为文件名加上对象名.png。下面是我的代码,但它不是很有效。我可以加载文件并读取对象。但是当我尝试读取对象的内容时,它无法正常工作。任何想法,我做错了什么:
for (file in dir("c:\\files" ,pattern = "OPENING")){
load(file)
for (object in ls()) {
## if I like to see the content of the oject
## I do this
### print(oject)
### this does not work, it just prints oject, not the content of objects
png("file+ojbect.png")
plot(object)
dev.off()
}
}
我使用了@Ben Bolker建议的get(oject),但我现在有另一个问题。我有一个日期列,我必须转换为as.Date并对其进行排序,以便它如下图所示:
x=as.data.frame(get(oject))
x$Date<- as.Date(x$Date, format="%Y-%m-%d")
x<- x[order(as.Date(x$Date, format="%Y-%m-%d")),]
我收到此错误:
Error in as.Date.default(x$Date, format = "%Y-%m-%d") :
do not know how to convert 'x$Date' to class "Date"
Calls: as.Date -> as.Date.default
Execution halted
我仍然遇到问题。第一次迭代工作,但是当涉及第二个文件时,它会阻塞:
suppressMessages(library(ggplot2))
suppressMessages(library(gridExtra))
suppressMessages(library(timeDate))
for (i in dir("c:\\tmp" ,pattern = "OPENNING")){
setwd("C:/tmp")
load(i)
print(i)
Sys.sleep(5)
for (object in ls()) {
x<-data.frame(get(object))
print(x)
x$Date<-as.Date(timeDate(x$Date))
x[order(x$Date),]
png((openning.png",sep="")
Plot(x)
dev.off()
}
}
错误:
Error in `$<-.data.frame`(`*tmp*`, "TimeStamp", value = numeric(0)) :
replacement has 0 rows, data has 7
Calls: $<- -> $<-.data.frame
Execution halted
如果您没有任何意见,请不要对我的帖子进行投票。我怎么能问这个问题。
答案 0 :(得分:1)
请尝试使用此日期问题:
x=as.data.frame(get(object))
x$Date<- as.Date(x$Date, format="%Y-%m-%d")
x<- x[order(x$Date)),]
# if the conversion was successful a Date class object can be ordered