簡體   English   中英

如何通過提取包含字符串的元素來對 r 中的列表進行子集化?

[英]How can I subset a list in r by extracting the elements that contain a string?

我有一個清單:

mylist<-list()
data<-1:162
listlabel<-c("a","bpt","b","fpt")
for (i in 1:4){
label<-listlabel[i]
mylist[[label]]<-data
}

我想從我的列表中包含某個字符串的元素創建一個新列表:在本例中為“pt”。 我的新列表應該包含元素“bpt”和“fpt”。

我認為 'grep' 會這樣做,但是當我嘗試它時,它返回一個空列表。

newlist<-list(grep("pt",mylist))

如何創建僅保留包含我的字符串的選定元素的新列表?

grep應該在names上,而不是在list的值上

mylist_sub <- mylist[grep('pt', names(mylist))]

我們可以使用purrr::keepgrepl

library(purrr)
`
mylist %>% keep(grepl('pt', names(mylist)))

輸出

$bpt
  [1]   1   2   3   4   5   6   7   8   9  10  11  12  13  14  15  16  17  18  19  20  21  22  23
 [24]  24  25  26  27  28  29  30  31  32  33  34  35  36  37  38  39  40  41  42  43  44  45  46
 [47]  47  48  49  50  51  52  53  54  55  56  57  58  59  60  61  62  63  64  65  66  67  68  69
 [70]  70  71  72  73  74  75  76  77  78  79  80  81  82  83  84  85  86  87  88  89  90  91  92
 [93]  93  94  95  96  97  98  99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115
[116] 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138
[139] 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161
[162] 162

$fpt
  [1]   1   2   3   4   5   6   7   8   9  10  11  12  13  14  15  16  17  18  19  20  21  22  23
 [24]  24  25  26  27  28  29  30  31  32  33  34  35  36  37  38  39  40  41  42  43  44  45  46
 [47]  47  48  49  50  51  52  53  54  55  56  57  58  59  60  61  62  63  64  65  66  67  68  69
 [70]  70  71  72  73  74  75  76  77  78  79  80  81  82  83  84  85  86  87  88  89  90  91  92
 [93]  93  94  95  96  97  98  99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115
[116] 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138
[139] 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161
[162] 162

暫無
暫無

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

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