R语言调用purrr包cross函数出现过滤函数逻辑值报错如何解决
报错产生原因
purrr::cross()的入参规则为:第一个参数.l接收包含所有需要做笛卡尔积的向量/元素的单列表对象,不支持将多个待计算的向量作为独立参数直接传入。- 你编写的
cross(c(1,2,3), c(4,5,6))代码中,第一个参数c(1,2,3)被识别为.l的传入值,第二个参数c(4,5,6)则被匹配到了函数的第二个参数.filter的位置。.filter参数要求传入一个返回单个逻辑值的过滤函数,传入数值向量会触发类型不匹配,你收到的报错就是这个原因导致的:
Error: The filter function must return a single logical 'TRUE' or 'FALSE', not NULL
正确调用方式
基础调用(返回列表格式笛卡尔积)
library(purrr) # 将所有待计算笛卡尔积的向量放在同一个list中传入即可 cross(list(c(1,2,3), c(4,5,6)))
进阶调用(直接返回数据框格式)
如果需要更易读的数据框格式结果,可以直接使用cross_df()函数:
cross_df(list( col1 = c(1,2,3), col2 = c(4,5,6) ))
内容的提问来源于stack exchange,提问作者Autodidactyle
相关产品推荐
相关产品推荐

