我有一个列表:
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::keep
和grepl
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