这只是一个例子。我的函数非常复杂,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
中的任何数字
有什么帮助吗?
答案 0 :(得分:2)
例如,如果您按如下方式在mvn verify
中设置参数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
n:单个整数。如果为正,则结果对象的大小:向量(包括列表)的元素数,矩阵或数据框的行数或函数的线数。如果为负,则除x的第n个最后一个/第一个元素外的所有元素。
答案 1 :(得分:2)
很容易,只要做
xx <- 1:11
names(xx) <- c(paste(‘at level‘, 1:(length(xx)-1), sep=‘:‘), ‘final element‘)