【问题标题】:R: importing multiple files [duplicate]R:导入多个文件[重复]
【发布时间】:2018-03-04 17:49:30
【问题描述】:

我有以 .log 扩展名保存的数据。文件内容如下:

Trajectory Log File
Date: Sun Mar 04 15:32:29 2018


Nr of Trajectories: 91
Trajectory-Mode: ON
Average Slope (Degrees): 28.05 / 51.99 / 64.83

Filename: test_tschamut_Pos1.xml

Z-offset: 1.32000
Rock Position X: 696621.38
Rock Position Y: 167730.02
Rock Position Z: 1679.6400

Friction:
Overall Type: Medium

               t (s)               x (m)               y (m)               z (m)               p0 ()               p1 ()               p2 ()               p3 ()          vx (m s-1)          vy (m s-1)          vz (m s-1)        wx (rot s-1)        wy (rot s-1)        wz (rot s-1)           Etot (kJ)           Ekin (kJ)      Ekintrans (kJ)        Ekinrot (kJ)              zt (m)             Fv (kN)             Fh (kN)        Slippage (m)      mu_s (N s m-1)       v_res (m s-1)     w_res (rot s-1)           JumpH (m)        ProjDist (m)               Jc ()           JH_Jc (m)              SD (m)
               0.000          696621.380          167730.020            1680.960               1.000               0.000               0.000               0.000               0.000               0.000               0.000               0.000               0.000               0.000            1192.526               0.000               0.000               0.000            1677.754               0.000               0.000               0.000               0.350               0.000               0.000               3.206               0.000               0.000               0.000               0.000
               0.010          696621.380          167730.020            1680.959               1.000               0.000              -0.000               0.000               0.000               0.000              -0.098               0.000               0.000               0.000            1192.526               0.010               0.010               0.000            1677.754               0.000               0.000               0.000               0.350               0.098               0.000               3.205               0.000               0.000               0.000               0.000
               0.020          696621.380          167730.020            1680.958               1.000               0.000              -0.000               0.000               0.000               0.000              -0.196               0.000               0.000               0.000            1192.526               0.039               0.039               0.000            1677.754               0.000               0.000               0.000               0.350               0.196               0.000               3.204               0.000               0.000               0.000               0.000
               0.040          696621.380          167730.020            1680.952               1.000               0.000              -0.000               0.000               0.000               0.000              -0.392               0.000               0.000               0.000            1192.526               0.158               0.158               0.000            1677.754               0.000               0.000               0.000               0.350               0.392               0.000               3.198               0.000               0.000               0.000               0.000
               0.060          696621.380          167730.020            1680.942               1.000               0.000              -0.000               0.000               0.000               0.000              -0.589               0.000               0.000               0.000            1192.526               0.355               0.355               0.000            1677.754               0.000               0.000               0.000               0.350               0.589               0.000               3.188               0.000               0.000               0.000               0.000
               0.080          696621.380          167730.020            1680.929               1.000               0.000              -0.000               0.000               0.000               0.000              -0.785               0.000               0.000               0.000            1192.526               0.631               0.631               0.000            1677.754               0.000               0.000               0.000               0.350               0.785               0.000               3.175               0.000               0.000               0.000               0.000
               0.110          696621.380          167730.020            1680.901               1.000               0.000              -0.000               0.000               0.000               0.000              -1.079               0.000               0.000               0.000            1192.526               1.193               1.193               0.000            1677.754               0.000               0.000               0.000               0.350               1.079               0.000               3.147               0.000               0.000               0.000               0.000
               0.130          696621.380          167730.020            1680.877               1.000               0.000              -0.000               0.000               0.000               0.000              -1.275               0.000               0.000               0.000            1192.526               1.666               1.666               0.000            1677.754               0.000               0.000               0.000               0.350               1.275               0.000               3.123               0.000               0.000               0.000               0.000
               0.150          696621.380          167730.020            1680.850               1.000               0.000              -0.000               0.000               0.000               0.000              -1.472               0.000               0.000               0.000            1192.526               2.218               2.218               0.000            1677.754               0.000               0.000               0.000               0.350               1.472               0.000               3.096               0.000               0.000               0.000               0.000
               0.160          696621.380          167730.020            1680.834               1.000               0.000              -0.000               0.000               0.000               0.000              -1.570               0.000               0.000               0.000            1192.526               2.523               2.523               0.000            1677.754               0.000               0.000               0.000               0.350               1.570               0.000               3.080               0.000               0.000               0.000               0.000
               0.180    

如何在 R 中导入这种数据格式? 是否可以同时导入多个这种格式的文件?

谢谢!

【问题讨论】:

    标签: r import


    【解决方案1】:

    您可以使用read.table 或read.fwf 和skip=N 读取表格部分(其中N 是表格标题之前的行数)。然后您可以使用readLines 阅读第一行N 并提取您需要的部分。

    为了导出许多相同格式的文件,我建议你先编写一个结合所有步骤的函数,如下所示:

    read.log <- function(filename){
       first <- readLines(filename, 10)
       date <- sub("Date: ", "", first[2]) # get date from second row
       date <- as.POSIXct(date, format="?strptime") # convert to date
       # use ?strptime to see how to specify date format
       # .... likewise for other pieces eg. nr. of trajectories
       second <- read.table(filename, skip = 10) # some other no. instead of 10
       R <- list(data=second, date=date, otherstuff = otherstuff, ...)
       # return as a list 
       R
       }
    

    现在您可以使用此函数读取任何文件,或将其应用于文件名列表(使用lapply 或for 循环)。

    【讨论】:

    • 行得通,谢谢!有没有办法添加多个相同格式的文件。我有 90 个,并且希望避免重复该命令 90 次...
    • 一种方式:lapply(dir("mylogs", full.names=TRUE), read.log)(假设read.log 采用文件名并返回数据,并且您的日志文件位于名为“mylogs”的子文件夹中
    猜你喜欢
    • 2021-11-16
    • 2014-07-20
    • 1970-01-01
    • 2018-11-22
    • 2017-01-05
    • 2013-01-12
    • 1970-01-01
    • 2018-07-06
    • 2012-10-18
    相关资源
    最近更新 更多