R如何排列数据帧的所有行,以便在列表中返回所有可能的行组合?
我试图生成一个数据帧(或矩阵,若更容易的话)的所有可能的行排列,并将一个对象作为数据帧/矩阵的列表或数组返回。我构建了一个模拟数据框架,它的维度与我正在使用的相同R如何排列数据帧的所有行,以便在列表中返回所有可能的行组合?,r,permutation,R,Permutation,我试图生成一个数据帧(或矩阵,若更容易的话)的所有可能的行排列,并将一个对象作为数据帧/矩阵的列表或数组返回。我构建了一个模拟数据框架,它的维度与我正在使用的相同 test.df <- as.data.frame(matrix(1:80,nrow=16,ncol=5) test.df 使用16而不是3和数据框将其应用于示例。1)问题定义不明确。组合中可以有两行以上吗?2) 你已经试过什么了?一个简单的谷歌搜索“R中的组合”会给你们一些指针,而不用在这里发帖。你们是指行的组合或排列吗?关于
test.df <- as.data.frame(matrix(1:80,nrow=16,ncol=5)
test.df
使用16而不是3和数据框将其应用于示例。1)问题定义不明确。组合中可以有两行以上吗?2) 你已经试过什么了?一个简单的谷歌搜索“R中的组合”会给你们一些指针,而不用在这里发帖。你们是指行的组合或排列吗?关于排列,我在下面给出了一个答案。我认为你应该澄清你的问题,否则问题可能会被关闭。我为大家的困惑感到抱歉。我更正了这篇文章,以便将来的读者能理解它。她写了组合
,但他指的是排列
,他把它标记为排列
。你能把-1标志去掉吗?不是我的-1。顺便说一句,从帮助中心“不是所有的问题都可以或应该在这里回答。”好的,谢谢你指出这一点。我只是很生气,因为我仔细阅读,试图想明白他的意思。。。是的,问题贴得不好。但这本身就是一个可以思考的问题。谢谢你的回答。很抱歉,原帖中的拼写错误造成了混乱。
v.df <- data.frame(symbol = c("a", "b", "c"), number = c(1,2,3))
v.df
## symbol number
## 1 a 1
## 2 b 2
## 3 c 3
permutate.rows <- function(df) {
k <- dim(df)[1] # number of rows
index.df <- as.data.frame(t(permutations(n = k, r = k, v = 1:k)))
res <- lapply(index.df, function(idx) df[idx, , drop = FALSE])
}
permutate.rows(v.df)
$V1
symbol number
1 a 1
2 b 2
3 c 3
$V2
symbol number
1 a 1
3 c 3
2 b 2
$V3
symbol number
2 b 2
1 a 1
3 c 3
$V4
symbol number
2 b 2
3 c 3
1 a 1
$V5
symbol number
3 c 3
1 a 1
2 b 2
$V6
symbol number
3 c 3
2 b 2
1 a 1