正确引用包中的ddply

时间:2016-09-09 18:42:25

标签: r dplyr plyr

我创建了一个大量使用dplyr的软件包,同时,这个软件包需要包含一个依赖于ddply plyr包的@import plyr的不同函数。最初,我直接使用@importFrom plyr ddply ldply llply,但它导致命名冲突,这破坏了我的其他功能。

所以我想我唯一的解决方案是包含必要的功能。因此,我添加了ldply llply,因为ddply中使用了dplyr。然而,它失败了......

一些代码示例

说明:我在plyr下加ImportsPackage: My ProdComp Type: Package Imports: dplyr, plyr
import(dplyr)
importFrom(plyr,ddply)
importFrom(plyr,ldply)
importFrom(plyr,llply)
NAMESPACE(由ROXYGEN2生成)
#' @importFrom plyr ddply ldply llply
#' 
#' @import dplyr
#'
#' @export

final_table <- ddply(product_type_subset,.(general_category, product_type, cas), summarise, Value = toString(maximum_weight_fraction[!is.na(maximum_weight_fraction)]))
实际剧本
Error in as.quoted(.variables) : could not find function "."
错误信息
var $elem = jQuery('#block-privatemsg-privatemsg-menu .content li.last a');
var text = $elem.text();
var matches = text.match('/d+/');
if (matches && matches.length) {
    $elem.append('<span>' + matches[0] + '</span>');
}

那么关于如何做到正确的任何建议?

2 个答案:

答案 0 :(得分:2)

.位于plyr,而不是dplyr

> dplyr::.
Error: '.' is not an exported object from 'namespace:dplyr'
> plyr::.
function (..., .env = parent.frame()) 
{
    structure(as.list(match.call()[-1]), env = .env, class = "quoted")
}
<environment: namespace:plyr>

所以只需从plyr和其他函数一起导入它。

答案 1 :(得分:2)

对于plyrldplydlply

llply仍然不错,但如果您需要的只是ddply,只需使用{{1}重写它即可}:

dplyr

相当于:

final_table <- ddply(product_type_subset,.(general_category, product_type, cas),
    summarise,
    Value = toString(maximum_weight_fraction[!is.na(maximum_weight_fraction)]))

这将是更快的代码并减少不必要的依赖(从维护的角度来看这非常好!)。

鉴于这是在一个包中,final_table <- group_by(product_type_subset, general_category, product_type, cas) %>% summarize_(Value = toString(maximum_weight_fraction[!is.na(maximum_weight_fraction)])) 将为&#34;变量提供上述任何一个的可见绑定&#34; 警告。如果您想提交给CRAN,您需要使用标准评估版本,如下所示:

R CMD CHECK

我不知道一个简单的方法来进行final_table <- group_by_(product_type_subset, ~general_category, ~product_type, ~cas) %>% summarize_(Value = ~toString(maximum_weight_fraction[!is.na(maximum_weight_fraction)])) 版本标准评估。对于plyr参数,您可以使用字符向量而不是.(),但我不知道.variables位。