The read_labspec function should work with all ascii text files exported from labspec: single-column files, time-series, 1D, 2D, 3D maps, with an without axes. Here's an example of reading each of these file types.
lf <- list.files(pattern = "txt")
# filter out the ones without axes (they're a bit useless)
lf <- lf[!grepl("noaxes", lf)]
lf
## [1] "01_piggy_axes.txt" "02_timeseries_axes.txt"
## [3] "03_2Dmap_axes.txt" "04_1Dmap_axes.txt"
## [5] "05_3Dmap_axes.txt"
We can now apply the read_labspec function to all the files,
ld <- lapply(lf, read_labspec)
names(ld) <- lf # give names to the list elements
# visualise the first 4 lines of each matrix
lapply(ld, head, 4)
## $`01_piggy_axes.txt`
## wavenumber y1
## [1,] 1691 14446
## [2,] 1692 16314
## [3,] 1694 18409
## [4,] 1695 20988
##
## $`02_timeseries_axes.txt`
## wavenumber y1 y2 y3 y4 y5 y6 y7 y8 y9 y10 y11 y12
## V2 1691 2686 2737 2840 2656 2767 2634 2697 2599 2636 2751 2698 2793
## V3 1692 2987 3011 3154 3009 3042 3166 3076 3009 3073 3022 3090 3008
## V4 1694 3438 3659 3560 3697 3449 3454 3612 3534 3578 3379 3520 3458
## V5 1695 4021 4096 4180 3987 4153 4067 3985 4040 4024 3870 3980 3981
## y13 y14 y15 y16 y17
## V2 2630 2767 2718 2769 2727
## V3 3043 3307 3014 3073 3116
## V4 3571 3555 3423 3543 3491
## V5 4006 4117 3940 3988 4079
##
## $`03_2Dmap_axes.txt`
## wavenumber y1 y2 y3 y4 y5 y6 y7 y8 y9 y10 y11 y12
## V3 1691 2671 2577 2714 2589 2665 2636 2715 2698 2665 2562 2660 2659
## V4 1692 2917 3062 2989 2946 2999 2912 2932 3011 2926 2962 2922 2961
## V5 1694 3594 3427 3297 3240 3495 3537 3489 3417 3362 3435 3434 3557
## V6 1695 3815 3970 3841 3970 3920 4062 3957 3954 3846 3951 3979 3879
## y13 y14 y15 y16 y17 y18 y19 y20 y21 y22 y23 y24 y25 y26
## V3 2697 2649 2600 2706 2655 2678 2751 2570 2622 2680 2558 2571 2643 2603
## V4 2978 3014 2922 3019 2827 2923 3080 3000 2961 3041 2923 2883 2962 3096
## V5 3429 3421 3471 3345 3418 3424 3522 3491 3511 3397 3369 3390 3432 3508
## V6 3848 3816 3851 3911 3849 3840 3934 3893 3847 3892 3860 3921 3899 3908
## y27 y28 y29 y30 y31 y32 y33 y34 y35 y36
## V3 2627 2733 2608 2572 2687 2609 2593 2759 2432 2669
## V4 3007 2894 2934 3008 2951 2940 2915 2959 2868 2933
## V5 3355 3552 3511 3408 3460 3496 3492 3446 3371 3404
## V6 3870 3994 3992 3899 3858 3870 3848 3879 3746 3885
##
## $`04_1Dmap_axes.txt`
## wavenumber y1 y2 y3 y4 y5 y6
## V2 1691 2621 2594 2637 2608 2672 2651
## V3 1692 2933 2862 2924 2991 2862 2824
## V4 1694 3421 3403 3306 3271 3356 3305
## V5 1695 3792 3777 3780 3898 3881 3817
##
## $`05_3Dmap_axes.txt`
## wavenumber y1 y2 y3 y4 y5 y6 y7 y8 y9 y10 y11 y12
## V4 1691 2697 2489 2590 2553 2547 2554 2522 2594 2681 2558 2707 2694
## V5 1692 2904 2937 2922 2888 2999 2846 2894 2921 2979 2834 2976 2795
## V6 1694 3279 3314 3282 3395 3391 3282 3294 3338 3273 3363 3394 3317
## V7 1695 3827 3884 3798 3879 3866 3864 3873 3783 3894 3936 3910 3759
## y13 y14 y15 y16 y17 y18 y19 y20 y21 y22 y23 y24 y25 y26
## V4 2652 2674 2637 2627 2674 2556 2620 2703 2658 2591 2594 2571 2710 2651
## V5 2987 3011 2906 2913 2922 3076 2973 2993 2886 2930 2989 2885 2911 2815
## V6 3565 3437 3415 3355 3432 3460 3496 3580 3406 3417 3316 3265 3400 3496
## V7 3740 3981 3889 3825 3882 3981 4031 3860 3933 3823 3865 3884 3793 3830
## y27
## V4 2709
## V5 2949
## V6 3356
## V7 3789
The tags attribute stores the optional metadata corresponding to time series or maps.
str(ld)
## List of 5
## $ 01_piggy_axes.txt : num [1:1024, 1:2] 1691 1692 1694 1695 1696 ...
## ..- attr(*, "dimnames")=List of 2
## .. ..$ : NULL
## .. ..$ : chr [1:2] "wavenumber" "y1"
## $ 02_timeseries_axes.txt: num [1:1024, 1:18] 1691 1692 1694 1695 1696 ...
## ..- attr(*, "dimnames")=List of 2
## .. ..$ : chr [1:1024] "V2" "V3" "V4" "V5" ...
## .. ..$ : chr [1:18] "wavenumber" "y1" "y2" "y3" ...
## ..- attr(*, "tags")= num [1:17] 0 0.843 1.57 2.37 3.114 ...
## $ 03_2Dmap_axes.txt : num [1:1024, 1:37] 1691 1692 1694 1695 1696 ...
## ..- attr(*, "dimnames")=List of 2
## .. ..$ : chr [1:1024] "V3" "V4" "V5" "V6" ...
## .. ..$ : chr [1:37] "wavenumber" "y1" "y2" "y3" ...
## ..- attr(*, "tags")='data.frame': 36 obs. of 2 variables:
## .. ..$ V1: num [1:36] -113 -113 -113 -113 -113 ...
## .. ..$ V2: num [1:36] -144 -134 -124 -114 -104 ...
## $ 04_1Dmap_axes.txt : num [1:1024, 1:7] 1691 1692 1694 1695 1696 ...
## ..- attr(*, "dimnames")=List of 2
## .. ..$ : chr [1:1024] "V2" "V3" "V4" "V5" ...
## .. ..$ : chr [1:7] "wavenumber" "y1" "y2" "y3" ...
## ..- attr(*, "tags")= num [1:6] -144 -134 -124 -114 -104 ...
## $ 05_3Dmap_axes.txt : num [1:1024, 1:28] 1691 1692 1694 1695 1696 ...
## ..- attr(*, "dimnames")=List of 2
## .. ..$ : chr [1:1024] "V4" "V5" "V6" "V7" ...
## .. ..$ : chr [1:28] "wavenumber" "y1" "y2" "y3" ...
## ..- attr(*, "tags")='data.frame': 27 obs. of 3 variables:
## .. ..$ V1: num [1:27] -10 -10 -10 -10 -10 -10 -10 -10 -10 0 ...
## .. ..$ V2: num [1:27] -10 -10 -10 0 0 0 10 10 10 -10 ...
## .. ..$ V3: num [1:27] -1.00e+01 -1.78e-15 1.00e+01 -1.00e+01 -1.78e-15 ...
To extract the tags from all files, we can also use lapply,
lapply(ld, attr, "tags")
## $`01_piggy_axes.txt`
## NULL
##
## $`02_timeseries_axes.txt`
## [1] 0.000 0.843 1.570 2.370 3.114 3.776 4.366 5.182 5.886 6.589
## [11] 7.295 7.998 8.601 9.408 10.112 10.815 11.520
##
## $`03_2Dmap_axes.txt`
## V1 V2
## y1 -113.38 -144.09
## y2 -113.38 -134.08
## y3 -113.38 -124.07
## y4 -113.38 -114.06
## y5 -113.38 -104.06
## y6 -113.38 -94.05
## y7 -101.43 -144.09
## y8 -101.43 -134.08
## y9 -101.43 -124.07
## y10 -101.43 -114.06
## y11 -101.43 -104.06
## y12 -101.43 -94.05
## y13 -89.48 -144.09
## y14 -89.48 -134.08
## y15 -89.48 -124.07
## y16 -89.48 -114.06
## y17 -89.48 -104.06
## y18 -89.48 -94.05
## y19 -77.52 -144.09
## y20 -77.52 -134.08
## y21 -77.52 -124.07
## y22 -77.52 -114.06
## y23 -77.52 -104.06
## y24 -77.52 -94.05
## y25 -65.57 -144.09
## y26 -65.57 -134.08
## y27 -65.57 -124.07
## y28 -65.57 -114.06
## y29 -65.57 -104.06
## y30 -65.57 -94.05
## y31 -53.62 -144.09
## y32 -53.62 -134.08
## y33 -53.62 -124.07
## y34 -53.62 -114.06
## y35 -53.62 -104.06
## y36 -53.62 -94.05
##
## $`04_1Dmap_axes.txt`
## [1] -144.09 -134.08 -124.07 -114.06 -104.06 -94.05
##
## $`05_3Dmap_axes.txt`
## V1 V2 V3
## y1 -10 -10 -1.000e+01
## y2 -10 -10 -1.776e-15
## y3 -10 -10 1.000e+01
## y4 -10 0 -1.000e+01
## y5 -10 0 -1.776e-15
## y6 -10 0 1.000e+01
## y7 -10 10 -1.000e+01
## y8 -10 10 -1.776e-15
## y9 -10 10 1.000e+01
## y10 0 -10 -1.000e+01
## y11 0 -10 -1.776e-15
## y12 0 -10 1.000e+01
## y13 0 0 -1.000e+01
## y14 0 0 -1.776e-15
## y15 0 0 1.000e+01
## y16 0 10 -1.000e+01
## y17 0 10 -1.776e-15
## y18 0 10 1.000e+01
## y19 10 -10 -1.000e+01
## y20 10 -10 -1.776e-15
## y21 10 -10 1.000e+01
## y22 10 0 -1.000e+01
## y23 10 0 -1.776e-15
## y24 10 0 1.000e+01
## y25 10 10 -1.000e+01
## y26 10 10 -1.776e-15
## y27 10 10 1.000e+01