Пожалуйста, запустите этот код:
list2env(list(df1 = iris, df2 = iris, df3 = CO2, df4 = CO2, df5 = cars), .GlobalEnv)
Он создаст 5 объектов data.frame df1 ~ df5 в вашем рабочем пространстве.
- df1 = df2 =
iris
- df3 = df4 =
CO2
- df5 =
cars
(Это встроенные наборы данных в R).
Теперь я пытаюсь определить, какая пара объектов равна, используя identical()
или all.equal()
,Сначала я выбираю имена объектов:
name_df <- ls(pattern = "^df") # [1] "df1" "df2" "df3" "df4" "df5"
И ожидаемый результат представляет собой следующую таблицу:
# df1 df2 df3 df4 df5
# df1 TRUE TRUE FALSE FALSE FALSE
# df2 TRUE TRUE FALSE FALSE FALSE
# df3 FALSE FALSE TRUE TRUE FALSE
# df4 FALSE FALSE TRUE TRUE FALSE
# df5 FALSE FALSE FALSE FALSE TRUE
Но на самом деле, я думаю, что неТ нужно использовать tidyverse
.В этом случае более подходящей может быть базовая функция outer()
.Однако следующий код всегда выдает ошибку независимо от того, как я ее исправляю (я пробовал Vectorize()
каждый аргумент identical()
, но он все еще не работает)
outer(name_df, name_df, function(x, y){
identical(get(x), get(y))
# Vectorize(identical)(get(x), get(y))
})
Спасибо за помощь!