R将值从For循环存储到数据帧

时间:2018-04-08 15:50:23

标签: r

我正在尝试编写一个包含2个参数的函数:列名和排名编号。该功能将读取包含来自每个州的医院的CSV文件。该函数应返回具有指定等级的医院名称的数据框。

我的解决方案是按状态拆分主CSV文件,按所需列排序每个数据帧,遍历每个状态的数据框,抓取行(行号=等级号),将每个州的医院名称存入一个向量,然后使用循环中的向量创建一个数据帧。

当我在控制台中测试我的功能的每个部分时,我能够收到我需要的结果。但是,当我完全运行该功能时,它不会根据需要存储医院名称。

这就是我所拥有的:

public static function getSubscribedServices(): array
{
    $services = parent::getSubscribedServices();
    $services['fos_elastica.manager'] = RepositoryManagerInterface::class;
    $services['knp_paginator'] = PaginatorInterface::class;

    return $services;
}

private function listHandler(Search $search, Request $request, int $page): Response
{
    //...
    $repository = $this->container->get('fos_elastica.manager')->getRepository(Foo::class);
    //...

}

当我完全运行该功能时,我在“医院”栏中收到NA,但是当我单独运行该功能的每个部分时,我能够收到所需的医院名称。我有点困惑为什么我能够在函数之外运行此函数的每个单独部分并返回我想要的结果,但不是当我作为一个整体运行函数时。谢谢。

1 个答案:

答案 0 :(得分:0)

这个问题与在Coursera的约翰霍普金斯大学R编程课程中的编程作业3有关。因此,我们无法提供代码的“更正版本”,因为这样做会违反Coursera Honor代码。

使用默认设置运行时,rankall()函数的实现失败,因为在提取运算符中使用num时,没有["best",2]行。如果您将代码作为head(rankall("heart attack",1))运行,则会生成以下输出。

> head(rankall("heart attack",1))
                              hospital state
1     PROVIDENCE ALASKA MEDICAL CENTER    AK
2             CRESTWOOD MEDICAL CENTER    AL
3              ARKANSAS HEART HOSPITAL    AR
4                 MAYO CLINIC HOSPITAL    AZ
5    GLENDALE ADVENTIST MEDICAL CENTER    CA
6 ST MARYS HOSPITAL AND MEDICAL CENTER    CO

要完全纠正您的功能,您需要进行以下更改。

  1. 添加代码以按所需的outcome列对数据进行排序:心脏病发作,心力衰竭或肺炎
  2. 添加代码以处理当州没有足够的医院返回有效结果时的情况(即波多黎各排名第43的肺炎医院
  3. 添加代码以处理“最佳”和“最差”作为num参数
  4. 的输入