r-在识别某个变量的所有可能组合时,数据帧数错误



我有以下数据帧

Name <- c("Jhon", "Lee", "Suzan", "Abhinav",
"Brain", "Ron","Cat","Mike","Bob","Sue","Carl")
Vote <- rep(letters[1:21],each=10, len=230)
z <- as.data.frame (cbind(Name, Vote))

我想创建一个数据帧列表,它代表6个名字的所有可能组合及其各自的投票(在我拥有的11个名字中(,还包括附加的5个其他名字。以下给出了6个名称的所有可能组合,即462

comb<-combn(unique(as.character(z$Name)), 6)

comb有462列,所以它是正确的输出。

以下代码创建组合中所有数据帧的列表。

combdf <- apply(comb, 2, function(vec) z[ z$Name %in% vec, ] )

下面的代码应该创建我想要的的输出

output <- z %>%
pull(Name) %>%
unique %>%
combn(., 3, FUN = function(vec) 
z %>%
filter(Name %in% vec) %>%
bind_rows(z %>% 
filter(!Name %in% vec) %>% 
rename(Name2 = Name, Vote2 = Vote)) %>%
mutate(across(c(Name2, Vote2),
~ .[order(is.na(.))])), simplify = FALSE)

我的问题是output有165个数据帧,我预计有462个。此外,如果我没有错的话,combdf中的每个数据帧应该有230行(我的原始数据帧-z也是如此(。然而,事实并非如此。例如,数字1有226,数字4有229,数字18有228(随机检查(。

combn中的m决定组合的数量以及

>combn(1:6, 2)
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [,13] [,14] [,15]
[1,]    1    1    1    1    1    2    2    2    2     3     3     3     4     4     5
[2,]    2    3    4    5    6    3    4    5    6     4     5     6     5     6     6
> combn(1:6, 3)
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [,13] [,14] [,15] [,16] [,17] [,18] [,19] [,20]
[1,]    1    1    1    1    1    1    1    1    1     1     2     2     2     2     2     2     3     3     3     4
[2,]    2    2    2    2    3    3    3    4    4     5     3     3     3     4     4     5     4     4     5     5
[3,]    3    4    5    6    4    5    6    5    6     6     4     5     6     5     6     6     5     6     6     6

注意列差异的数量。类似地,在OP的帖子中,"combdf"是用m = 6创建的,而在tidyverse代码中,使用的m是3。因此,它与462165不同

最新更新