gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 19:55:20 26 4
gpt4 key购买 nike

我正在尝试读取多个“.xrdml”类型的文件,并将它们组合成带有直观标签的单个数据帧。问题是这种文件类型具有大量元数据。

我尝试过以下方法

所需包

library(rxylib)

我尝试过的事情

temp = list.files(pattern="*.xrdml")
xyz<-do.call(rbind,sapply(temp, read_xyData,verbose = TRUE,metaData = FALSE))

我最终得到了一个列表,我可以使用例如调用列表中的每个成员 xyz[[2]]

          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

如果我尝试使用 unlist 函数来展平列表,那么结果会变得困惑

我想做的是读入所有文件并按列组合它们,每个文件都有共同的第一列,即 2Theta 。我还想使用每个文件标题的独特部分来标记 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

这是我的文件 sample files 的示例

可悲的是,我花了很多时间尝试了一些不起作用的事情。

如果我能获得有关如何解决此问题的任何帮助或指导,我将非常感激。

最佳答案

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

# 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)

关于读入复杂数组中的 .xrdml 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52134277/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com