2013-05-13 111 views
0

我想改變我的一個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?

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

回答

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) 
+0

正是我在找的東西。非常感謝你! – user1807096 2013-05-13 22:30:55

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 

望着問題又來我想知道,如果你wnated至順序名分配到一個字符向量:

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