我试图理解如何在语句中正确格式化lapply、rbind和www.example.com的组合do.call,但无法使语句正常运行。我提供了一个简单的示例函数和数据,用于尝试理解使用的格式化。我完全理解,可以使用更简单的方法运行我提供的场景。这样做的目的是为了简单地理解格式以及如何在自定义函数上使用lapply和rbind。
以下是一些测试数据:
facility_id patient_number test_result
123 1000 25
123 1000 30
25 1001 12
25 1002 67
25 1010 75
65 1009 8
22 1222 95
22 1223 89
我实际上是尝试使用一个facility id值列表将自定义函数中的数据分成子集,然后将自定义函数生成的每个数据表绑定在一起。
下面是我使用的代码:
facilities_id_list<-c(123, 25)
facility_counts<-function(facilities_id_list){
facility<-facilities_id_list[[i]]
subset<-data[facility_id==facility]
}
results <- do.call("rbind", lapply(seq_along(facilities_id_list), function(i) facility_counts)
我希望达到的结果是:
facility_id patient_number test_result
123 1000 25
123 1000 30
25 1001 12
25 1002 67
25 1010 75
为什么不起作用?我需要更改格式吗?
2条答案
按热度按时间zbq4xfa01#
使用
%in%
进行直接子集化,而不是使用==
在OP的代码中,存在多个问题- 1)输入参数为
facilities_id_list
,其中与lapply
一样,我们正在对序列i
进行循环。,2)facility_id==facility
应为data$facility_id==facility
,因为我们正在使用[
,并且没有数据绑定。3)我们需要指定使用行索引作为子集,默认情况下不使用任何,
,它将被视为data.frame
中的列索引qeeaahzv2#
下面是一个使用普通的
filter
的示例,然后是另一个使用do.call()
的自定义函数的选项: