R неверный тип индекса 'list' в одном наборе данных, но не в другом, который является классом spec_tbl_df - PullRequest
0 голосов
/ 12 июня 2019

У меня есть два набора данных с большим количеством столбцов (55 в наборе данных 1 и 42 в наборе данных два).У каждого из них есть тонны строк, которые начинаются с «dist_», и я пытаюсь получить код, чтобы определить, какой столбец имеет наименьшее расстояние, и разместить это местоположение.Оба выглядят так, но набор данных 1 содержит больше демографической информации, чем второй.

ilt_city__state_country dist_antwerp dist_bangkok dist_beijing
  <chr>                          <dbl>        <dbl>        <dbl>
1 tokyo na jpn                   5855.        2866.     1.31e+ 3
2 tokyo na jpn                   5855.        2866.     1.31e+ 3
3 beijing na chn                 4931.        2049.     1.32e-12
4 singapore na sgp                 NA           NA     NA       
5 so paulo na bra                6025.       10194.     1.09e+ 4

Так что код, который я должен определить для расположения шкафа, выглядит так:

Enrollment_Report$nearest_hub <- hub_locations_list$hub_loc[apply(Enrollment_Report[grep("^dist", names(Enrollment_Report))], 1, which.min)]

И это выдает эту ошибку:

Error in hub_locations_list$hub_loc[apply(Enrollment_Report[grep("^dist",  : 
  invalid subscript type 'list'

Но что странно, когда я использую практически тот же код во втором наборе данных, он работает без проблем:

all_locations$nearest_hub <- hub_locations_list$hub_loc[apply(all_locations[grep("^dist", names(all_locations))], 1, which.min)]

Я пытался использоватьunlist (), но это не работает.Я также попытался найти класс наборов данных, и вот что я получаю:

> class(Enrollment_Report)
[1] "tbl_df"     "tbl"        "data.frame"
> class(all_locations)
[1] "spec_tbl_df" "tbl_df"      "tbl"         "data.frame"

Я никогда не слышал о spec_tbl_df, но это единственное отличие, которое я могу найти между этими двумя наборами данных.Есть ли способ сделать первый также spec_tbl_df и что это такое?

Спасибо!

...