如何在R中按名称范围从列表选取元素构建新列表?
提取列表中指定名称范围的元素
在R里不能直接用AE:SUPPCM这种名称范围的方式索引列表,因为:运算符默认只对数值位置或连续字符序列生效,而你的列表名称是离散的键值,没法直接用名称生成范围。不过可以通过先获取目标元素的位置,再用位置范围来实现需求,步骤如下:
实现代码
# 获取列表所有元素的名称 list_names <- names(spec_list) # 找到起始和结束元素的位置 start_pos <- which(list_names == "AE") end_pos <- which(list_names == "SUPPCM") # 用位置范围提取目标元素 lst2 <- spec_list[start_pos:end_pos]
验证效果
你可以先打印list_names确认位置是否正确:
print(list_names) # 输出应该是: # [1] "README" "SIGN_OFF" "REVISION_HISTORY" "Study" # [5] "Datasets" "AE" "SUPPAE" "CM" # [9] "SUPPCM"
可以看到AE在第6位,SUPPCM在第9位,6:9正好对应你需要的4个元素,和你之前逐个列举名称的结果完全一致。
简化写法
如果想更简洁,也可以把步骤合并成一行:
lst2 <- spec_list[which(names(spec_list) == "AE"):which(names(spec_list) == "SUPPCM")]
内容的提问来源于stack exchange,提问作者Stataq
相关产品推荐
相关产品推荐

