Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
函数式编程:使用broom nest->;整洁->;函数中的unest和map_R_Dplyr_Nse_Broom - Fatal编程技术网

函数式编程:使用broom nest->;整洁->;函数中的unest和map

函数式编程:使用broom nest->;整洁->;函数中的unest和map,r,dplyr,nse,broom,R,Dplyr,Nse,Broom,我需要将一段(有效的)dplyr/broom代码转换成一个函数,因为我会多次调用它 我被卡住了——这可能与非标准评估与标准评估混合有关 这里我直接从 这项工作: Tree estimate statistic p.value parameter conf.low conf.high method alternative 1 1 0.9854675 12.97258 4.851902e-05

我需要将一段(有效的)dplyr/broom代码转换成一个函数,因为我会多次调用它

我被卡住了——这可能与非标准评估与标准评估混合有关

这里我直接从

这项工作:

    Tree  estimate statistic      p.value parameter  conf.low conf.high                               method alternative
1    1 0.9854675  12.97258 4.851902e-05         5 0.9012111 0.9979400 Pearson's product-moment correlation   two.sided
2    2 0.9873624  13.93129 3.425041e-05         5 0.9136142 0.9982101 Pearson's product-moment correlation   two.sided
3    3 0.9881766  14.41188 2.901046e-05         5 0.9189858 0.9983260 Pearson's product-moment correlation   two.sided
4    4 0.9844610  12.53575 5.733090e-05         5 0.8946782 0.9977964 Pearson's product-moment correlation   two.sided
5    5 0.9877376  14.14686 3.177093e-05         5 0.9160865 0.9982635 Pearson's product-moment correlation   two.sided
现在的重点是,我想用它做一个函数

因此,如果我尝试以下方法:

afunction <- function(data, var) {
  data %>% 
    nest(-Tree) %>% 
    mutate(
      test = map(data, ~ cor.test(.x$age, .x$var)), # S3 list-col
      tidied = map(test, tidy)
    ) %>% 
    unnest(tidied, .drop = TRUE)
}
我试着用NSE,引号,半引号。我承认我有点随意尝试过,因为我找不到一个合适的教程,教我如何让NSE和SE与$operator配合得很好


有什么解决方案吗?特别是可以扩展的解决方案,教我如何一劳永逸地解决这些问题?我也很高兴看到相关书籍/教程中的指针。

$
cor.test
来自base R,因此它们不会与NSE一起使用,有关更多信息,请参阅
帮助(“$”)
。要解决您的问题,只需使用
.x[[var]]
更改
.x$var
,然后使用
函数(橙色,“周长”)
调用您的函数,谢谢!成功了。如果你将此作为回复发布,我将验证它;否则,如果你认为这只是最琐碎的问题,我也可以删除它。不客气,我认为最好删除它。我不认为删除是好的。这似乎是一个有用的问题,那些没有NSE、quosures等经验的人会觉得有用。很高兴你没有删除!今天证明很有用-谢谢大家:)
$
cor.test
来自base R,因此它们不会与NSE一起工作,有关更多信息,请参阅
帮助(“$”)
。要解决您的问题,只需使用
.x[[var]]
更改
.x$var
,然后使用
函数(橙色,“周长”)
调用您的函数,谢谢!成功了。如果你将此作为回复发布,我将验证它;否则,如果你认为这只是最琐碎的问题,我也可以删除它。不客气,我认为最好删除它。我不认为删除是好的。这似乎是一个有用的问题,那些没有NSE、quosures等经验的人会觉得有用。很高兴你没有删除!今天证明很有帮助-谢谢大家:)
afunction <- function(data, var) {
  data %>% 
    nest(-Tree) %>% 
    mutate(
      test = map(data, ~ cor.test(.x$age, .x$var)), # S3 list-col
      tidied = map(test, tidy)
    ) %>% 
    unnest(tidied, .drop = TRUE)
}
 Error in cor.test.default(.x$age, .x$var) : 'x' and 'y' must have the same length