如何在保留其他元素的同时从向量中删除元素?

Kar*_*kha 1 row r vector

我有一个x包含5个元素的向量.

x <- (1,2,3,4,5)
Run Code Online (Sandbox Code Playgroud)

我想在每次迭代时删除一个元素并在向量中保留其他元素.(如下所示)

x <- (2,3,4,5)     #vector after first iteration 

x <- (1,3,4,5)     #vector after second iteration 

x <- (1,2,4,5)     #vector after third iteration 

x <- (1,2,3,5)     #vector after fourth iteration 
Run Code Online (Sandbox Code Playgroud)

还有,是否可以将这些新载体存储在列表中?有没有办法将其扩展到多个向量?

Pie*_*nte 6

你可以使用combn:

combn(5,4)
     [,1] [,2] [,3] [,4] [,5]
[1,]    1    1    1    1    2
[2,]    2    2    2    3    3
[3,]    3    3    4    4    4
[4,]    4    5    5    5    5
Run Code Online (Sandbox Code Playgroud)

要获取数据list:

as.list(data.frame(combn(5,4)))
Run Code Online (Sandbox Code Playgroud)

要在多个向量或矩阵上使用它,首先将其转换为a data.frame,以便更容易lapply地遍历长度(列)data.frame.然后你可以使用lapplycombn像这样:

mat <- data.frame(matrix(1:10,5))
lapply(mat, function(x) combn(x,length(x)-1))

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

$X2
     [,1] [,2] [,3] [,4] [,5]
[1,]    6    6    6    6    7
[2,]    7    7    7    8    8
[3,]    8    8    9    9    9
[4,]    9   10   10   10   10
Run Code Online (Sandbox Code Playgroud)