R - 使用ddply时找不到对象错误

时间:2016-12-05 04:55:30

标签: r object plyr ecdf

我正在将ddply应用于以下数据框。关键是将ecdf函数应用于annual_test_count值到具有相同国家/地区的行。

> head(test)
 country yearly_test_count download_speed
1      AU                 1       2.736704
2      AU                 6       3.249486
3      AU                 6       2.287267
4      AU                 6       2.677241
5      AU                 6       1.138213
6      AU                 6       3.205364

这是我使用的脚本:

 house_total_year_ecdf <- ddply(test, c("country"), mutate, 
        ecdf_val = ecdf(yearly_test_count)(yearly_test_count)*length(yearly_test_count))

但是我收到了以下错误:

Error in eval(substitute(expr), envir, enclos) : 
  object 'yearly_test_count' not found

=============================================== ===================

我尝试单独使用ecdf函数和annual_test_count列,它可以工作:

ecdf(test$yearly_test_count)(test$yearly_test_count)*length(test$yearly_test_count)

任何人都知道为什么在使用ddply时这不起作用?

这很奇怪,因为之前的脚本工作,现在我再次运行脚本并遇到上述错误。我不确定这个问题是否与R版本或包版本有不同?

非常感谢任何帮助! :)

1 个答案:

答案 0 :(得分:1)

一种选择是使用ave

中的base R
test$ecdf_val <-  with(test, ave(yearly_test_count, country, 
                       FUN = function(x) ecdf(x)(x)*length(x)))