如何使用R中的任何Apply函数从向量中迭代删除元素?

时间:2017-05-02 02:38:36

标签: r vector indexing apply

如何使用R?

中的任何Apply函数从向量中迭代删除元素

例如,鉴于a = c(1:5)。我需要迭代地删除一个元素,以便我可以获得以下输出的列表:

2  3  4  5
1  3  4  5
1  2  4  5
1  2  3  5
1  2  3  4

如何使用任何Apply功能进行操作?由于向量中的元素数量非常大,for循环需要很长时间才能生成输出。

3 个答案:

答案 0 :(得分:0)

如果您真的想使用apply功能,可以使用

t(sapply(a, setdiff, x=a))

我们需要使用t()进行转置,因为sapply更喜欢按列顺序返回结果。

答案 1 :(得分:0)

这样的工作:

alist <- lapply(1:length(a), function(as) {
    a[-as]
})

答案 2 :(得分:0)

以下是如何使用laply一次删除一个元素:

library(plyr)
laply(1:length(a), function(x) a[-x])

     1 2 3 4
[1,] 2 3 4 5
[2,] 1 3 4 5
[3,] 1 2 4 5
[4,] 1 2 3 5
[5,] 1 2 3 4