连接字符串以生成变量名称

时间:2013-05-13 21:14:51

标签: r split string-concatenation

我想更改R函数输出的名称以反映输入的不同字符串。这是我尝试过的:

kd = c("a","b","d","e","b")

test = function(kd){

  return(list(assign(paste(kd,"burst",sep="_"),1:6)))

}

这只是一个简单的测试功能。我收到了警告(这对我来说同样糟糕):

Warning message:
In assign(paste(kd, "burst", sep = "_"), 1:6) :
  only the first element is used as variable name

理想情况下,我会得到像a_burst = 1,b_burst = 2这样的输出,但是我没有接近。

我想按向量的内容拆分数据框,并能够根据该向量中的名称命名所有内容,类似于

How to split a data frame by rows, and then process the blocks?

但并不完全。命名是必要的。

2 个答案:

答案 0 :(得分:3)

这样的事,也许?

kd = c("a","b","d","e","b")

test <- function(x){
    l <- as.list(1:5)
    names(l) <- paste(x,"burst",sep = "_")
    l
}

test(kd)

答案 1 :(得分:2)

您可以通过setNames使用向量而不是列表:

t1_6 <- setNames( 1:6, kd)
t1_6
   a    b    d    e    b <NA> 
   1    2    3    4    5    6 

> t1_6["a"]
a 
1 

再次查看这个问题,我想知道你是否愿意为字符向量分配顺序名称:

> a1_5 <- setNames(kd, paste0("alpha", 1:5))
> a1_5
alpha1 alpha2 alpha3 alpha4 alpha5 
   "a"    "b"    "d"    "e"    "b"