R sub使用do.call,lapply或mapply从向量列表中进行选择?

时间:2015-01-29 19:29:47

标签: r lapply mapply do.call

我有以下数据。 x是向量列表,indices是索引列表。

x = list(c("a", "b", "c", "a"), c("b", "x", "a", "c"))
indices = list(c(1, 2), c(3, 4))

我想要做的是逐步完成列表x中表示的每个向量,并根据indices向量从该向量中进行子选择。所以预期的结果是

a,b
a,c

我用mapply

尝试了
> mapply('[',x,indices)
     [,1] [,2]
[1,] "a"  "a" 
[2,] "b"  "c" 

但那不是我想要的。有什么指针吗?提前谢谢。

1 个答案:

答案 0 :(得分:3)

你很亲密。索引后,元素可以折叠为单个字符串。在这里,我使用toString

的包装器(paste(., collapse=', ')
 f1 <- function(x,y) toString(x[y])
 mapply(f1,x,indices)
 #[1] "a, b" "a, c"