У меня довольно большой тиббл (называемый df.tbl
с ~ 26k строками и 22 столбцами), и я хочу найти «двойников» каждого объекта, то есть каждой строки с одинаковыми значениями в столбце 2: 7 (дата: Pos).
Если я использую:
inner_join(df.tbl, ~ df.tbl[i,], by = c("date", "forge", "serNum", "PinMain", "PinMainNumber", "Pos"))
, где i
- строка, которую я хочу проверить на «близнецы», все работает, как и ожидалось, выплевывая столбик 2 x 22, иЯ могу расширить это, используя:
x <- NULL
for (i in 1:nrow(df.tbl)) {
x[[i]] <- as_vector(inner_join(df.tbl[,],
df.tbl[i,],
by = c("date",
"forge",
"serNum",
"PinMain",
"PinMainNumber",
"Pos")) %>%
select(rowNum.x)
}
, чтобы создать список, содержащий номера строк для каждого двойника для каждого объекта (строки).
Я не могу, однако пытаюсь использовать map
чтобы получить аналогичный результат:
twins <- map(df.tbl, ~ inner_join(df.tbl,
.,
by = c("date",
"forge",
"serNum",
"PinMain",
"PinMainNumber",
"Pos")) %>%
select(rowNum.x) )
Все, что я получаю, это следующая ошибка:
Error in UseMethod("tbl_vars") : no applicable method for 'tbl_vars' applied to an object of class "c('double', 'numeric')"
Как мне поступитьпреобразовать цикл for
в эквивалент, используя map
?
Мои исходные данные выглядят так:
>head(df.tbl, 3)
# A tibble: 3 x 22
rowNum date forge serNum PinMain PinMainNumber Pos FrontBack flow Sharped SV OP max min mean
<dbl> <date> <chr> <fct> <fct> <fct> <fct> <fct> <chr> <fct> <fct> <chr> <dbl> <dbl> <dbl>
1 1 2017-10-18 NA 179 Pin 1 W F NA 3 36237 235 77.7 55.3 64.7
2 2 2017-10-18 NA 179 Pin 2 W F NA 3 36237 235 77.5 52.1 67.4
3 3 2017-10-18 NA 179 Pin 3 W F NA 3 36237 235 79.5 58.6 69.0
# ... with 7 more variables: median <dbl>, sd <dbl>, Round2 <dbl>, Round4 <dbl>, OrigData <list>, dataSize <int>,
# fileName <chr>
, и я хотел бы получить список с длиной, равной nrow (df.tbl) выглядит следующим образом:
> twins
[[1]]
[1] 1 7
[[2]]
[1] 2 8
[[3]]
[1] 3 9
Почти все объекты имеют один близнец / дубликат (как указано выше), но некоторые имеют два или даже три дубликата (как определено выше, т.е. столбец 2: 7 - этото же самое)