Ich versuche, in .xrdml Daten innerhalb einer komplexen Matrix in r zu lesen

stimmen
0

Ich versuche, mehrere Dateien vom Typ „.xrdml“ zu lesen und sie zu einem einzigen Datenrahmen mit einem intuitiven Label kombinieren. Das Problem ist, dass dieser Dateityp eine große Metadaten hat.

Ich habe die folgende versucht

Erforderliche Paket

library(rxylib)

Dinge, die ich versuchte,

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

i mit einer Liste am Ende, ich kann jedes Mitglied der Liste rufe zum Beispiel unter Verwendung von 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

wenn ich versuche, um die Liste zu glätten, indem die fehlende oder Funktion, dann wird das Ergebnis chaotisch

was ich werde wie in allen Dateien zu tun ist, und durch Spalte kombinieren zu lesen, hat jede Datei ersten Spalt gemeinsam dh 2 Theta. Ich werde auch gerne den einzigartigen Teil jeder Datei Titel verwenden V2 zu beschriften

meine Dateien haben Titel wie BBHD-FASS_4-70_step01_40s_ LM 11_5 .xrdml. was ich hoffe , am Ende zu tun , um in der Lage ist , einen Datenrahmen ähnlich wie die Probe zu haben , unter

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

Hier sind Beispiele meiner Dateien Beispieldateien

Leider, ich habe schon so viel Zeit damit verbracht mehrere Dinge auszuprobieren, die nicht funktioniert hat.

Ich werde für jede Hilfe oder Unterstützung sehr dankbar ich bekommen kann, wie dieses Problem zu nähern.

Veröffentlicht am 02/09/2018 um 05:37
quelle vom benutzer
In anderen Sprachen...                            


1 antworten

stimmen
4

Um Dich auf die Daten , um die richtige Position in der Liste der Daten zu finden , die von zurückgegeben wird read_xyData. Sie können dies auf , indem Sie str(lst)unten. Um auf die Daten verwenden ...$dataset[[1]]$data_block. (es kann Extraktor Funktionen in dem Paket sein , aber ich habe nicht geprüft)

# 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)
Beantwortet am 19/11/2018 um 18:07
quelle vom benutzer

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more