R语言如何提取包含指定字符串的列表元素完成列表取子集?
错误原因
grep("pt", mylist)默认匹配列表存储的元素内容,示例中列表每个元素存储的都是1:162的数值序列,无法匹配到pt字符串,因此返回空结果。需求为匹配列表元素的名称时,需要先调用names(mylist)获取所有元素名称再做匹配。
注意:列表用单中括号
[]取子集返回的是子列表,用双中括号[[]]会直接返回元素内部存储的值,此处要保留列表结构必须使用单中括号提取。
正确实现代码
最简写法
直接通过grep匹配名称后提取子列表:
newlist <- mylist[grep("pt", names(mylist))]
分步写法(便于后续调试)
先获取匹配成功的元素名称,再提取:
# 返回所有包含pt的元素名称 matched_labels <- grep("pt", names(mylist), value = TRUE) # 按名称提取子列表 newlist <- mylist[matched_labels]
运行后执行names(newlist)验证,输出为"bpt" "fpt",符合预期结果。
内容的提问来源于stack exchange,提问作者matlabcat
相关产品推荐
相关产品推荐

