R语言:如何用简洁代码生成指定命名的重复元素列表
简洁生成重复命名的列表
嘿,我懂你想要的是一个所有元素都以x为名称的命名列表,而且不想重复写四次x=来手动创建对吧?这里有几个简洁的实现方式:
方法1:最直接的一行写法
利用setNames给列表的每个元素统一设置名称,结合as.list把向量转换成列表结构:
FD_OesophagitisIntro <- setNames( as.list(paste0("LA Grade ", LETTERS[1:4])), rep("x", 4) )
解释:
paste0("LA Grade ", LETTERS[1:4])生成包含"LA Grade A"到"LA Grade D"的向量as.list()把向量转换成每个元素独立的列表rep("x", 4)生成4个"x"作为每个列表元素的名称,setNames()完成名称绑定
方法2:利用replicate批量生成
如果想更直观地体现“重复创建带x名称的元素”,可以用replicate配合预先生成的等级值:
grades <- paste0("LA Grade ", LETTERS[1:4]) FD_OesophagitisIntro <- replicate( n = 4, expr = setNames(list(grades[i]), "x"), simplify = FALSE )
不过这种写法和方法1本质逻辑一致,方法1会更简洁高效。
为什么你之前的代码没生成命名列表?
你之前的代码list(unique(append(FD_OesophagitisIntro,replicate(4,paste("LA Grade ",sample(c("A","B","C","D"),replace=F)))))) 本质是把一个无名称的向量塞进了一个大列表里,没有给内部的每个元素单独设置名称,所以最终得到的是无命名的列表结构。
内容的提问来源于stack exchange,提问作者Sebastian Zeki
相关产品推荐
相关产品推荐

