2012-05-15 21 views
0

說我有兩個列表:如何粘貼2名列表(長度相等),而不使用循環,形成一個新的列表

a = list(1,2) 
    b = list("x","y") 
     #a 
     #[[1]] 
     #[1] 1 

     #[[2]] 
     #[1] 2 

     #b 
     #[[1]] 
     #[1] "x" 

     #[[2]] 
     #[1] "y" 

我想以下結果:

 #[[1]] 
     #[1] "1x" 

     #[[2]] 
     #[1] "2y" 

我試過如下:

lapply(a, paste, b) 

但結果卻不出我所料:

 #[[1]] 
     #[1] "1 x" "1 y" 

     #[[2]] 
     #[1] "2 x" "2 y" 

我不知道是否有任何方法可以獲得理想的效果 - 不需要使用任何附加的軟件包或循環。

謝謝!

回答

3

這裏有一個建議:

as.list(paste(a,b, sep="")) 
[[1]] 
[1] "1x" 

[[2]] 
[1] "2y" 
+0

+1 ...和R 2.15你可以使用'as.list(paste0(a,b))' – Tommy

+0

@jigr謝謝!這非常有用。 – Alex

0

jigr的答案是正確的,但我想解決您的嘗試性解決方案。你在1碼線,運行它的接觸。您沒有向樂譜提供分隔符,因此粘貼使用默認的" "。要麼提供該分離器(sep=""),要麼更好地使用paste0(R版本< = 2.15),其默認爲""分隔符。

a = list(1,2) 
b = list("x","y") 

lapply(a, paste, b, sep="") 
lapply(a, paste0, b) 
+0

感謝您的更正。很高興知道paste0(),因爲當我使用paste()時,有時會忘記包含sep =「」,這在過去給我帶來了問題和不良結果:) – Alex

相關問題