0

在名为 c:/files 的目录中更新了一堆文件。这些文件是包含 R ojects 的 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

如果您没有任何意见,请不要对我的帖子投反对票。我该怎么问这个问题。

4

1 回答 1

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
于 2012-05-29T19:36:40.830 回答