簡體   English   中英

在R中嵌套列表

[英]lapply over nested list in R

我需要將函數應用於嵌套列表。 第一個列表項的結構是:

str(ldf[[1]])
List of 3
 $ Header   :List of 10
  ..$ abif                : chr "ABIF"
  ..$ version             : int 101
  ..$ DirEntry.name       : raw [1:4] 74 64 69 72
  ..$ DirEntry.number     : int 1
  ..$ DirEntry.elementtype: int 1023
  ..$ DirEntry.elementsize: int 28
  ..$ numelements         : int 99
  ..$ dataoffset          : int 97865
  ..$ datahandle          : int 0
  ..$ unused              : num [1:47] 0 0 0 0 0 0 0 0 0 0 ...
 $ Directory:'data.frame':  99 obs. of  7 variables:
  ..$ name       : chr [1:99] "ANME" "CMNT" "CMNT" "CMNT" ...
  ..$ tagnumber  : int [1:99] 1 1 2 3 4 5 1 1 1 1 ...
  ..$ elementtype: int [1:99] 19 18 18 18 18 18 19 19 19 18 ...
  ..$ elementsize: int [1:99] 1 1 1 1 1 1 1 1 1 1 ...
  ..$ numelements: int [1:99] 13 29 29 29 29 29 10 10 4 9 ...
  ..$ datasize   : int [1:99] 13 29 29 29 29 29 10 10 4 9 ...
  ..$ dataoffset : int [1:99] 140 97720 97749 97778 97807 97836 97686 97696 1346454016 95088 ...
 $ Data     :List of 99
  ..$ ANME.1  : chr "AFLP-Default"
  ..$ CTID.1  : chr "GS#12-081"
  ..$ CTNM.1  : chr "GS#12-081"
  ..$ CTOw.1  : chr "PAB"
  ..$ CTTL.1  : chr "Comment:"
  ..$ CpEP.1  : chr "\001"
  ..$ DATA.1  : int [1:8960] 1 -2 -3 -3 -2 2 0 0 1 2 ...
  ..$ DATA.2  : int [1:8960] -2 3 4 5 2 -3 0 0 -2 -1 ...
  ..$ DATA.3  : int [1:8960] 0 0 -6 -6 -2 3 -5 1 3 1 ...
  ..$ DATA.4  : int [1:8960] -1 -1 3 2 1 -5 3 -4 -4 -6 ...
  ..$ DATA.5  : int [1:544] 0 0 0 0 0 0 0 0 0 0 ...
  ..$ DATA.6  : int [1:544] 0 0 0 0 0 0 0 0 0 0 ...
  ..$ DATA.7  : int [1:544] 6 6 6 6 6 6 15 15 15 15 ...
  ..$ DATA.8  : int [1:544] 60 60 60 59 59 59 59 59 59 59 ...

假設我對$ Data $ DATA.1中的值感興趣。 如何將函數應用於每個$ Data $ DATA.1? 喜歡 :

findpeaks(ldf[[1]]$Data$DATA.1,threshold=500)
findpeaks(ldf[[2]]$Data$DATA.1,threshold=500)
findpeaks(ldf[[x]]$Data$DATA.1,threshold=500)
...

發件人: 如何將函數應用於嵌套列表? 我明白了:

lapply(ldf, function(x) lapply(lapply(x, '[[', 'Data'), function(x) findpeaks(ldf[[x]]$Data$DATA.1,threshold=500)))

ldf [[x]]中的錯誤:嘗試選擇少於一個元素

此列表是否深度嵌套以使用lapply?

從joran的評論來看,這是工作代碼:

lapply(ldf,function(x) findpeaks(x$Data$DATA.1,threshold=500))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM