创建列表中所有元素的组合
Create combination of all elements in a list
我正在创建一个需要用户输入输入变量的函数,然后该函数会创建这些输入参数的所有可能的组合(不同长度)。假设输入变量是“A”、“B”和“C”。
Combination #
Input1
Input2
Input3
1
A
B
C
2
A
B
3
A
4
B
C
5
B
6
A
C
7
C
我希望 R 形成 A、B 和 C 的所有可能组合并为其创建数据框。例如:
知道如何实现吗?
谢谢!
你可以试试
library(dplyr)
x <- c(TRUE,FALSE)
expand.grid(x,x,x) %>%
filter(rowSums(.) != 0) %>%
mutate(Var1 = ifelse(Var1, "A", ""),
Var2 = ifelse(Var2, "B", ""),
Var3 = ifelse(Var3, "C", "")) %>%
tibble::rownames_to_column()
rowname Var1 Var2 Var3
1 1 A B C
2 2 B C
3 3 A C
4 4 C
5 5 A B
6 6 B
7 7 A
函数
func <- function(input){
n <- length(input)
x <- c(TRUE,FALSE)
y <- expand.grid(rep(list(x),n)) %>%
filter(rowSums(.) != 0)
for (i in 1:length(input)){
y[,i] [y[,i]] <- input[i]
y[,i][y[,i] != input[i]] <- ""
}
y %>%
rownames_to_column()
}
inp <- c("A", "B", "C")
func(inp)
rowname Var1 Var2 Var3
1 1 A B C
2 2 B C
3 3 A C
4 4 C
5 5 A B
6 6 B
7 7 A
我正在创建一个需要用户输入输入变量的函数,然后该函数会创建这些输入参数的所有可能的组合(不同长度)。假设输入变量是“A”、“B”和“C”。
Combination # | Input1 | Input2 | Input3 |
---|---|---|---|
1 | A | B | C |
2 | A | B | |
3 | A | ||
4 | B | C | |
5 | B | ||
6 | A | C | |
7 | C |
我希望 R 形成 A、B 和 C 的所有可能组合并为其创建数据框。例如:
知道如何实现吗? 谢谢!
你可以试试
library(dplyr)
x <- c(TRUE,FALSE)
expand.grid(x,x,x) %>%
filter(rowSums(.) != 0) %>%
mutate(Var1 = ifelse(Var1, "A", ""),
Var2 = ifelse(Var2, "B", ""),
Var3 = ifelse(Var3, "C", "")) %>%
tibble::rownames_to_column()
rowname Var1 Var2 Var3
1 1 A B C
2 2 B C
3 3 A C
4 4 C
5 5 A B
6 6 B
7 7 A
函数
func <- function(input){
n <- length(input)
x <- c(TRUE,FALSE)
y <- expand.grid(rep(list(x),n)) %>%
filter(rowSums(.) != 0)
for (i in 1:length(input)){
y[,i] [y[,i]] <- input[i]
y[,i][y[,i] != input[i]] <- ""
}
y %>%
rownames_to_column()
}
inp <- c("A", "B", "C")
func(inp)
rowname Var1 Var2 Var3
1 1 A B C
2 2 B C
3 3 A C
4 4 C
5 5 A B
6 6 B
7 7 A