user1807096
user1807096

Reputation: 25

concatenating strings to make variable name

I want to change the name of the output of my R function to reflect different strings that are inputted. Here is what I have tried:

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

test = function(kd){

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

}

This is just a simple test function. I get the warning (which is just as bad an error for me):

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

Ideally I would get ouput like a_burst = 1, b_burst = 2 and so on but am not getting close.

I would like split up a dataframe by contents of a vector and be able to name everything according to the name from that vector, similar to

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

but not quite. The naming is imperative.

Upvotes: 0

Views: 15103

Answers (2)

IRTFM
IRTFM

Reputation: 263301

You could use a vector instead of a list by way of 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 

Looking at the question again I wondered if you wnated to assign sequential names to a character vector:

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

Upvotes: 2

joran
joran

Reputation: 173517

Something like this, maybe?

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

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

test(kd)

Upvotes: 3

Related Questions