4行记录成一行?如何组合成一条线?

时间:2015-08-31 09:51:22

标签: r

我想请你帮忙。我的数据看起来像这样:(一条记录分为四行:

 9540    16
0.1586E-03-0.3713E-04 0.1559E-03-0.4054E-04 0.2610E-02 0.2589E-03 0.4509E-03
0.7271E-03 0.2286E-03 0.8627E-03 0.1511E-02 0.1208E-03 0.1169     0.5486E-01
0.1419E-01 0.1715    
 9546    16
0.1546E-03-0.2273E-04 0.1504E-03-0.1516E-04 0.2517E-02 0.1968E-03 0.5512E-03
0.7556E-03 0.2998E-03 0.1024E-02 0.1495E-02 0.6889E-03 0.1134     0.5461E-01
0.1418E-01 0.1708

我想将其读入R并看起来像这样(在一行中):

9540 16 0.1586E-03 -0.3713E-04 0.1559E-03 -0.4054E-04 0.2610E-02 0.2589E-03 0.4509E-03 0.7271E-03 0.2286E-03 0.8627E-03 0.1511E-02 0.1208E-03 0.1169   0.5486E-01 0.1419E-01 0.1715    
9546 16 0.1546E-03 -0.2273E-04 0.1504E-03 -0.1516E-04 0.2517E-02 0.1968E-03 0.5512E-03 0.7556E-03 0.2998E-03 0.1024E-02 0.1495E-02 0.6889E-03 0.1134     0.5461E-01 0.1418E-01 0.1708

1 个答案:

答案 0 :(得分:0)

我们可以使用readLines读取文件。根据具有gl的组,使用pastetapply'行'创建分组变量。如果需要,我们可以使用str_trim

中的library(stringr)删除前导和滞后空格
lines <- readLines('fourlines.txt')
lines2 <- tapply(lines, as.numeric(gl(length(lines), 4, length(lines))), 
                 FUN= paste, collapse=' ')
library(stringr)    
lines2 <- str_trim(unname(lines2))

输出'lines2'

lines2
#[1] "9540    16 0.1586E-03-0.3713E-04 0.1559E-03-0.4054E-04 0.2610E-02 0.2589E-03 0.4509E-03 0.7271E-03 0.2286E-03 0.8627E-03 0.1511E-02 0.1208E-03 0.1169     0.5486E-01 0.1419E-01 0.1715"
#[2] "9546    16 0.1546E-03-0.2273E-04 0.1504E-03-0.1516E-04 0.2517E-02 0.1968E-03 0.5512E-03 0.7556E-03 0.2998E-03 0.1024E-02 0.1495E-02 0.6889E-03 0.1134     0.5461E-01 0.1418E-01 0.1708"

如果我们想删除多余的空格

lines2 <- gsub('\\s+', ' ', lines2)