如何移除R语言列表中名称以asd开头的元素
R语言移除列表中名称以
asd开头的元素 完全可以实现,核心思路是匹配列表元素的名称前缀,筛选保留不符合规则的元素即可,有两种常用的可靠写法:
方法1:正则匹配写法,适配所有R版本
用grepl()配合正则前缀匹配符^,识别所有名称以asd开头的元素,取反后做列表子集筛选即可:# 示例原始列表 x1 <- list(asd1 = structure(19116, class = "Date"), asd2 = TRUE, a3 = structure(19116, class = "Date"), MainNavBar = "V", btnGetDWData = structure(0L, class = c("integer", "shinyActionButtonValue")), sd = "Info", fd = NULL, fd = NULL) # 移除asd开头的元素 x1_clean <- x1[!grepl("^asd", names(x1))]运行后查看
names(x1_clean)就能确认,原列表里的asd1、asd2已经被完全移除,剩余元素的内容、顺序都不会改动。方法2:前缀专用函数写法,可读性更高
如果是R 3.3.0及以上版本,可以用专门判断字符串前缀的startsWith()函数,不用写正则,逻辑更直观:x1_clean <- x1[!startsWith(names(x1), "asd")]
注意:不要靠固定位置的负索引(比如写
x1[-c(1,2)])删元素,这种写法依赖列表元素的固定顺序,一旦列表结构调整就会出现误删,用名称匹配的方式稳定性更高。
内容的提问来源于stack exchange,提问作者manu p
相关产品推荐
相关产品推荐

