Итак, у меня есть эта функция для логического вычисления (диаграммы Венна), но я не могу сделать функцию универсальной для любого кадра данных любого размера.
Эта функция работает только для предоставленного кадра данных (только четыре столбца)
how_much = 5000000
A <- sample(how_much, replace = TRUE, x = 1:5)
B <- sample(how_much, replace = TRUE, x = 1:5)
C <- sample(how_much, replace = TRUE, x = 1:5)
D <- sample(how_much, replace = TRUE, x = 1:5)
VennData = data.table(A, B, C, D)
Venn_Counts <- function(dataset, unique_number, operator) {
message("Operator arrgument are: `==` or`<` or `<=` or `>` or `>=`")
if(inrange(unique_number, 1, 35) ){
dataset %>% as_tibble() %>%
mutate(A = (operator(A, unique_number)),
B = (operator(B, unique_number)),
C = (operator(C, unique_number)),
D = (operator(D, unique_number))) %>%
count(A, B, C, D)
}
else {
print("Unique number must be in range from 1 to 5")
}
}
Venn_Counts(VennData, 2, operator = `<=`)
как бы мы сделали вышеуказанную функцию универсальной для фрейма данных, в котором было бы больше столбцов?
для меньших объектов мы получили бы что-то вроде: установка аргументов unique_number = 3, operator = ==
count A B
24 TRUE TRUE
20 TRUE FALSE
13 FALSE TRUE
43 FALSE FALSE
когда мы можем видеть, что у нас есть 24 наблюдения, где A и B равно 3, 20 наблюдений имеют A, равное 3, и B не равно 3, 13 наблюдений имеют Aне равно 3, а B равно 3 и т. д.