【问题标题】:splitting list of xts in separate objetcs在单独的对象中拆分 cts 列表
【发布时间】:2017-07-10 08:33:42
【问题描述】:

利用论坛上发布的资源,我设法创建了一个将文件转换为 xts 类对象的脚本。但是,这是这些对象的列表。最终,我想将这些文件转换为单独的对象 xts。我要在脚本中输入什么更改,它们显示为单独的对象,每个对象都属于 xts 类?

有脚本:

files <- list.files( pattern="*.mst")
listmst <- vector("list", length(files))
names(listmst)<- files
for (i in 1:length(files)) {
  temp <- read.zoo(files[i], sep=",", header=TRUE, 
                     index.column=1, format="%Y%m%d", tz="", 
                     colClasses = rep(c("NULL","character", "numeric"), c(1,1,5)))
  listmst[[files[i]]]<- as.xts(temp)
}
rm(temp,files)

要转换的 csv 文件: https://www.dropbox.com/s/paql3y0gm5gve3z/pourek.rar?dl=0

【问题讨论】:

    标签: r list xts


    【解决方案1】:

    您需要使用assign 之类的东西来创建具有符号名称的对象。例如:

    files <- list.files(pattern = "*.mst")
    for (f in files) {
      # Create symbol from file name
      Symbol <- gsub("\\.mst", "", basename(f))
      # Ensure it's a valid R name
      Symbol <- make.names(Symbol)
      # Read data from file
      temp <- read.zoo(f, sep=",", header=TRUE, format="%Y%m%d", tz="", 
                       colClasses = rep(c("NULL","character", "numeric"), c(1,1,5)))
      # Clean up column names
      colnames(temp) <- gsub("^X\\.|\\.$", "", colnames(temp))
      # Create object named `symbol` containing data from `temp`
      assign(Symbol, as.xts(temp))
    }
    rm(Symbol, temp, f)
    

    现在你应该在你的工作区看到这个:

    R> ls()
     [1] "ABPL"       "AILLERON"   "ALIOR"      "ALMA"       "ALTA"      
     [6] "ALTERCO"    "files"      "KREDYTIN"   "KREZUS"     "KRKA"      
    [11] "KRUK"       "KRUSZWICA"  "MABION"     "MAKARONPL"  "MANGATA"   
    [16] "MARVIPOL"   "MASTERPHA"  "MBANK"      "MBWS"       "MCI"       
    [21] "MCLOGIC"    "MDIENERGIA" "MEDIACAP"   "MEDIATEL"   "X11BIT"    
    [26] "X4FUNMEDIA"
    R> head(ABPL)
                OPEN  HIGH   LOW CLOSE    VOL
    2006-09-21 11.54 12.19 11.50 11.70 844641
    2006-09-22 11.69 11.69 11.25 11.60  53033
    2006-09-25 11.49 11.83 11.49 11.83 125607
    2006-09-26 11.90 12.05 11.90 12.04 104956
    2006-09-27 12.09 12.09 11.70 11.95  69062
    2006-09-28 11.70 12.00 11.65 12.00  37466
    

    请注意,所有以数字开头的符号现在都以“X”开头,因为以数字开头的 R 对象不是“语法上有效的”。

    【讨论】:

    • 这正是我正在搜索的结果。我需要几天时间才能完全理解代码。非常感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-17
    • 1970-01-01
    • 1970-01-01
    • 2018-10-10
    • 2017-11-02
    • 1970-01-01
    相关资源
    最近更新 更多