Это приводит к запрошенному выводу из ввода, но я не знаю, обобщается ли оно в более широкий случай.
Сначала я определяю фрейм данных df
df <- read.table(text = "In1 In2 In3 In4 In5 In6 Out1 Out2
4 3 2 4 2 10 0.4 0.5
4 3 2 3 2 7 0.6 0.8
2 3 1 4 2 9 0.2 0.1
4 3 2 4 2 8 0.8 0.7
4 5 6 4 2 1 0.9 0.1
4 3 2 4 2 3 0.4 0.5", header = TRUE)
Затем я ищу дублирующиеся строки в столбцах с 1 по 5.
df[duplicated(df[, 1:5])|duplicated(df[, 1:5], fromLast = TRUE),]
# In1 In2 In3 In4 In5 In6 Out1 Out2
# 1 4 3 2 4 2 10 0.4 0.5
# 4 4 3 2 4 2 8 0.8 0.7
# 6 4 3 2 4 2 3 0.4 0.5
Это пробует все возможные комбинации входов.Я нахожу все возможные комбинации 5 столбцов из 6 входов.
col_combinations <- combn(1:6, 5)
Затем я проверяю каждый.
apply(col_combinations, MAR = 2,
function(x)df[duplicated(df[, x])|duplicated(df[, x], fromLast = TRUE),])
Как видите, успешен только один.
# [[1]]
# In1 In2 In3 In4 In5 In6 Out1 Out2
# 1 4 3 2 4 2 10 0.4 0.5
# 4 4 3 2 4 2 8 0.8 0.7
# 6 4 3 2 4 2 3 0.4 0.5
#
# [[2]]
# [1] In1 In2 In3 In4 In5 In6 Out1 Out2
# <0 rows> (or 0-length row.names)
#
# [[3]]
# [1] In1 In2 In3 In4 In5 In6 Out1 Out2
# <0 rows> (or 0-length row.names)
#
# [[4]]
# [1] In1 In2 In3 In4 In5 In6 Out1 Out2
# <0 rows> (or 0-length row.names)
#
# [[5]]
# [1] In1 In2 In3 In4 In5 In6 Out1 Out2
# <0 rows> (or 0-length row.names)
#
# [[6]]
# [1] In1 In2 In3 In4 In5 In6 Out1 Out2
# <0 rows> (or 0-length row.names)