如何基于R中的特定长度设置名称

时间:2018-07-08 11:26:23

标签: r

这只是一个例子。我的函数非常复杂,setNames是函数代码的一部分

我有一个向量xx11个元素。我想给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中的任何数字

有什么帮助吗?

2 个答案:

答案 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‘)