R:导入多个文件

时间:2018-03-04 17:49:31

标签: r import

我有以.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中导入此数据格式? 是否可以同时导入此格式的许多文件?

谢谢!

1 个答案:

答案 0 :(得分:0)

您可以使用read.tableread.fwfskip=N阅读表格部分(其中N是表格标题前面的行数)。然后,您可以使用N阅读第一个readLines行,并提取您需要的部分。

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

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
   }

现在您可以使用此功能读入任何文件,或将其应用于文件名列表(使用lapplyfor循环)。