在复杂数组中读入.xrdml数据

在复杂数组中读入.xrdml数据,r,arraylist,customization,R,Arraylist,Customization,我试图读取几个“.xrdml”类型的文件,并将它们组合成一个带有直观标签的数据帧。问题是此文件类型的元数据很大 我试过以下方法 必需包 我试过的东西 如果我试图使用unlist函数将列表展平,那么结果就会变得混乱 我想做的是读入所有文件并按列组合,每个文件都有共同的第一列,即2ETA。我还想使用每个文件标题的唯一部分来标记V2 我的文件的标题类似于“BBHD-FASS_4-70_step01_40s_LM 11_5.xrdml”。我希望最后能够做的是拥有一个类似于下面示例的数据帧 2Theta

我试图读取几个“.xrdml”类型的文件,并将它们组合成一个带有直观标签的数据帧。问题是此文件类型的元数据很大

我试过以下方法

必需包 我试过的东西 如果我试图使用unlist函数将列表展平,那么结果就会变得混乱

我想做的是读入所有文件并按列组合,每个文件都有共同的第一列,即2ETA。我还想使用每个文件标题的唯一部分来标记V2

我的文件的标题类似于“BBHD-FASS_4-70_step01_40s_LM 11_5.xrdml”。我希望最后能够做的是拥有一个类似于下面示例的数据帧

2Theta   LM 6-26  LM 6-27  LM 6-28 LM 4-10 LM 4-11 LM 4-12
4.006565    3576    3535    3677    3576    3535    3677
4.019695    3526    3552    3662    3526    3552    3662
4.032826    3584    3581    3657    3584    3581    3657
4.045956    3489    3535    3539    3489    3535    3539
4.059086    3496    3507    3525    3496    3507    3525
4.072217    3335    3466    3628    3335    3466    3628
4.085347    3353    3456    3444    3353    3456    3444
4.098477    3430    3479    3588    3430    3479    3588
4.111607    3334    3547    3535    3334    3547    3535
4.124738    3424    3342    3439    3424    3342    3439
4.137868    3349    3384    3459    3349    3384    3459
4.150998    3318    3395    3413    3318    3395    3413
4.164129    3208    3490    3457    3208    3490    3457
4.177259    3357    3295    3519    3357    3295    3519
4.190389    3254    3372    3450    3254    3372    3450
这是我的文件样本

可悲的是,我已经花了这么多时间尝试了一些不起作用的事情


对于如何处理此问题,我将非常感谢您提供的任何帮助或指导。

要获取数据,您需要在
read\u xyData
返回的数据列表中找到正确的位置。您可以通过查看下面的
str(lst)
来完成此操作。要获取数据,请使用
..$dataset[[1]]$data\u block
。(包中可能有提取器功能,但我尚未检查)

下载数据:链接失效
#下载文件("https://ucc93bf0aa50821e11b95c9530f5.dl.dropboxusercontent.com/zip_by_token_key?_download_id=9101556320431172280658295109635067362614982268430911643523348&_notify_domain=www.dropbox.com&dl=1&key=AV5mxk0trnetzASlH9_xJijTiGE55mUz0qa-x7JveZ7-RDP3Z8I7GMWWQOWJ8TUO14RKJ51HUHB5UBDOXAC3WLUHVOMR7_bul691AMGPMWZGWY0STEZJFRNQ0CVUR-iHNnZUHk9-t-i72nYODDpjXvo0pbhwtxwjunwcsl4bnauzzreqtzwznlspmf8pwz37e9enf1wuakljwe43gbv2lakuotdghfcmmwokulimega“,destfile=感谢您抽出时间来帮助解决这个问题……我只在文件中添加了一行代码来读取,因为解压失败
路径=“~/MEGA/R/spectrum_Files/spectrum_Files/Data”不客气。如果是您的名字,您可以尝试
gsub(“)*_(\\w+\\w+.*$”、“\\1”、basename(nms))
但我认为最好在一个新问题中寻求帮助——让regrex的人关注它。(ps最好从
basename(nms)
中添加一个不同潜在名称的小样本,尝试获取所有边缘案例)谢谢…它适用于所有文件类型,!!!我希望我有你在base r中的知识类型
temp = list.files(pattern="*.xrdml")
xyz<-do.call(rbind,sapply(temp, read_xyData,verbose = TRUE,metaData = FALSE))
          2Theta    V2
   [1,]  4.006565  3496
   [2,]  4.019695  3417
   [3,]  4.032826  3520
   [4,]  4.045956  3516
   [5,]  4.059086  3480
   [6,]  4.072217  3343
   [7,]  4.085347  3466
   [8,]  4.098477  3552
   [9,]  4.111607  3425
  [10,]  4.124738  3384
2Theta   LM 6-26  LM 6-27  LM 6-28 LM 4-10 LM 4-11 LM 4-12
4.006565    3576    3535    3677    3576    3535    3677
4.019695    3526    3552    3662    3526    3552    3662
4.032826    3584    3581    3657    3584    3581    3657
4.045956    3489    3535    3539    3489    3535    3539
4.059086    3496    3507    3525    3496    3507    3525
4.072217    3335    3466    3628    3335    3466    3628
4.085347    3353    3456    3444    3353    3456    3444
4.098477    3430    3479    3588    3430    3479    3588
4.111607    3334    3547    3535    3334    3547    3535
4.124738    3424    3342    3439    3424    3342    3439
4.137868    3349    3384    3459    3349    3384    3459
4.150998    3318    3395    3413    3318    3395    3413
4.164129    3208    3490    3457    3208    3490    3457
4.177259    3357    3295    3519    3357    3295    3519
4.190389    3254    3372    3450    3254    3372    3450
# download data : link dead
#download.file("https://ucc93bf0aa50821e11b95c9530f5.dl.dropboxusercontent.com/zip_by_token_key?_download_id=9101556320431172280658295109635067362614982268430911643523348&_notify_domain=www.dropbox.com&dl=1&key=AV5mxk0trnetzASlH9_xJijTiGE55mUz0qa-x7JveZ7-Rdp3Z8i7GmwwQoWj8tUO14RKj51huhb5CuBdoxAC3WLuHvOMr7_bul691AmGpmwZgWWy0STezjFRnq0CVUR-iHNnZUHk9-t-i72nYODDpjXvo0PBhWTXwJuNWCSL4bnAauZREQtZwzNlspMF8PwZ37E9enf1WUUakLJwE43GbV2lAkuOTDghfcMmwokulIMEGA", destfile=temp<-tempfile())
unzip(temp, exdir=xdir<-tempdir())  

nms <- list.files(xdir, pattern="xrdml", full.names=TRUE)
# grab the names to names columns later
cnms <- gsub(".*(LM \\w+).*$", "\\1", basename(nms))


library(rxylib)

# loop through files to read in
lst <- lapply(nms, read_xyData, verbose = TRUE, metaData = FALSE)

# grab the data
dats <- lapply(lst, function(x) x$dataset[[1]]$data_block)

# rename second column
dats <- lapply(seq_along(dats), function(x) {
                          colnames(dats[[x]])[2] <- cnms[x] ; dats[[x]]})

# merge
alldat <- Reduce(function(...) merge(..., by="2Theta"), dats)