r - 如何根据 R 中的特定长度设置名称
问题描述
这只是一个例子。我的功能很复杂,setNames
是功能代码的一部分
我有一个xx
带有11
元素的向量。我想给所有元素起1:10
一个特殊的名字。但是,我想给最后一个元素一个不同的名称。我试过setNames
了,但它给了我所有元素的相同名称。
xx <- c(1:11)
myfun <- function(i) {
setNames(i, paste0("at level:", seq_along(i)))
}
> myfun(xx)
at level:1 at level:2 at level:3 at level:4 at level:5 at level:6 at level:7 at level:8 at level:9
1 2 3 4 5 6 7 8 9
at level:10 at level:11
10 11
我希望第一个10
元素的名称为at level
. 但是,我想将最后一个元素命名为Final element
.
这是另一个尝试:
myfun <- function(i){
mm <- length(i)
fin <- setNames(i-1 , paste0("at level:", 1:(mm-1)))
fin}
myfun(xx)
但我得到NA
了最后一个元素。
> myfun(xx)
at level:1 at level:2 at level:3 at level:4 at level:5 at level:6 at level:7 at level:8 at level:9
0 1 2 3 4 5 6 7 8
at level:10 <NA>
9 10
我的向量的长度并不总是11
它可以是任何数字2: infinity
请问有什么帮助吗?
解决方案
seq_along(xx)
例如,如果您按如下方式设置参数n = -1
,则可以排除最后一个元素head()
setNames(xx ,
nm = c(paste0("at level:", head(seq_along(xx), -1)), "Final element"))
#at level:1 at level:2 at level:3 at level:4 at level:5 at level:6 at level:7 at level:8 at level:9 at level:10 Final element
# 1 2 3 4 5 6 7 8 9 10 11
从?head
n:单个整数。如果为正,则结果对象的大小:向量(包括列表)的元素数,矩阵或数据框的行数或函数的行数。如果为负数,则除 x 的 n 个最后/第一个元素之外的所有元素。
推荐阅读
- python - 将 xarray 数据变量重新分配给 xarray 坐标
- java - jsoup 在尝试抓取 google 时返回太多请求错误
- r - flow_images_from_directory 保存增强图像
- javascript - 在 mongoose 中查询超过 X 分钟的文档
- jquery - jQuery - 仅允许数字和限制字符 - 突出显示文本时不起作用
- angular - Angular删除特定的表单验证器,而不是Formbuilder中的所有验证器
- reactjs - 反应组件中的 Typscript 可选参数
- salesforce - 使用 force:recordData 将记录添加到 Salesforce 中的 Campaign 对象
- excel - 如何将单元格或范围传递到 InStr?
- excel - .copy 在将当前工作簿复制到新工作簿时工作不一致