如何避免R语言中vector向量自动给命名追加数字索引?
R向量赋值时避免名称自动加序号的解决方案
R的c()函数在为长度大于1的子向量指定单个名称时,会默认添加数字后缀保证名称唯一性,没有全局参数可以直接关闭这一行为,你可以用以下更简洁的方案实现所有元素使用相同名称的需求:
方案1:一步赋值完成(推荐)
使用setNames()函数直接在创建向量时指定名称,无需二次修改:
# 固定长度写法 test <- setNames(c(8, 5, 9), rep("key", 3)) # 通用写法,适配任意长度的向量 val_vec <- c(8, 5, 9) test <- setNames(val_vec, rep("key", length(val_vec)))
方案2:简化当前的临时方案
R支持名称自动循环填充,无需手动调用rep()生成重复名称,原有修改逻辑可以简化为:
test <- c("key"=c(8, 5, 9)) names(test) <- "key"
两种方案得到的输出都符合预期:
key key key 8 5 9
注意:如果后续需要通过名称索引向量元素,重复名称只会返回第一个匹配的元素,若有索引需求建议保留唯一名称标识。
内容的提问来源于stack exchange,提问作者Davide
相关产品推荐
相关产品推荐

