2012-05-15 20 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

相关问题