【问题标题】:Keeping data when using mapply in R在 R 中使用 mapply 时保留数据
【发布时间】:2021-12-27 19:50:10
【问题描述】:

我有一个数据框,我正在应用一个函数来使用mapply(),但我的结果没有在我想保留的初始数据框中保留某些信息。我在数据框中应用的函数未矢量化。

数据框

Dealer  Cities                  Zip     Radius in miles     
A       Rancho Cucamonga, CA    91730   40  
A       San Bernardino, CA      92401   40  
B       Chino, CA               91710   40  
B       Fontana, CA             92337   40  

我正在应用一个函数来获取初始邮政编码的给定英里半径内的所有邮政编码。

remotes::install_github("EAVWing/ZipRadius")

results <-  with(city_names, mapply(ZipRadius::zipRadius, 
                             as.character(`Center Zip Code`),`Radius in miles`, SIMPLIFY =FALSE ))

结果

结果是一个包含每次调用函数zipRadius 的数据框的大列表。

期望的结果

每个数据框都包含函数使用的邮政编码和函数生成的数据,但我希望它还保留与每个初始邮政编码关联的相应“经销商”列。

例如,上面的数据框是从 zip 91730 生成的,它的 Dealer 值为 A。

DEALER   ZIP      Other columns generated by the function...
A        90001 
A        90002
A        90011

【问题讨论】:

  • dplyr::left_join(city_names, dplyr::bind_rows(results, id ='zip1'), by = c(zip='zip1'))
  • @lmonninger 不正确
  • @Onyambu 我得到一个错误,Error: Argument 2 must have names. 我认为这与dplyr::bind_rows(results, id ='zip1') id 参数试图抓取什么有关?
  • 抱歉应该是.id='zip1'我忘了句号
  • 这是您可以做的快速修复。你有Zip 而不是zip。写by =c(Zip = 'zip1') 而不是我所拥有的

标签: r mapply


【解决方案1】:

@Onyambu 在 cmets (source) 中给了我一个很好的解决方案:

dplyr::left_join(city_names, dplyr::bind_rows(results, .id ='zip1'),  
                  by =c(Zip= 'zip1'))

【讨论】:

    猜你喜欢
    • 2013-04-07
    • 1970-01-01
    • 2021-05-22
    • 2011-11-14
    • 2013-05-01
    • 1970-01-01
    • 2022-12-08
    • 2023-01-28
    • 2017-01-11
    相关资源
    最近更新 更多