首页 > 其他分享 >别人运行的好好的R代码,到我这怎么就冲突了?你应该这么做!!!

别人运行的好好的R代码,到我这怎么就冲突了?你应该这么做!!!

时间:2024-08-22 16:54:03浏览次数:8  
标签:dplyr 函数 好好 代码 prefer filter 冲突 conflicted cyl

培训时,同一段代码,大家都运行的好好的,而你却出现问题了,一般都是考虑包里的函数冲突了。这时需要一个个去排查到底是哪个函数发生了冲突,有没有更好的办法呢?

本文介绍一个包conflicted,可以列出所有冲突的函数,并可以设置优先使用哪个函数来处理冲突。

包的安装

install.packages("conflicted")
# 或
# install.packages("devtools")
# devtools::install_github("r-lib/conflicted")

加载包后,存在冲突的函数会无法运行

并且提供了两种解决方法,都在错误提示中。(学程序语言,看错误提示并且能理解错误提示很重要)

library(conflicted)
library(dplyr)

filter(mtcars, cyl == 8)
#> Error: [conflicted] `filter` found in 2 packages.
#> Either pick the one you want with `::` 
#> * dplyr::filter
#> * stats::filter
#> Or declare a preference with `conflicted_prefer()`
#> * conflict_prefer("filter", "dplyr")
#> * conflict_prefer("filter", "stats")

使用::指定使用哪个包的哪个函数

如下,虽然写的字母多了些,但清晰明了。如果只用到了filter函数,dyplr包都不用显示加载。

另外,在Rstuido中,还会有函数自动补全功能,输入dplyr::后会列出这个包里面所有外部可用函数。

相对应的还有dplyr:::可以调用dplyr中没有export出的函数。

dplyr::filter(mtcars, am & cyl == 8)
#>    mpg cyl disp  hp drat   wt qsec vs am gear carb
#> 1 15.8   8  351 264 4.22 3.17 14.5  0  1    5    4
#> 2 15.0   8  301 335 3.54 3.57 14.6  0  1    5    8

或者设定优先级

推荐在加载包的同时,就对可能会发生冲突的函数,设置使用优先级

library(dplyr)
# 优先使用dplyr里面的filter函数
conflict_prefer("filter", "dplyr")
#> [conflicted] Will prefer dplyr::filter over any other package

filter(mtcars, am & cyl == 8)
#>    mpg cyl disp  hp drat   wt qsec vs am gear carb
#> 1 15.8   8  351 264 4.22 3.17 14.5  0  1    5    4
#> 2 15.0   8  301 335 3.54 3.57 14.6  0  1    5    8

列出所有存在冲突的函数

如果函数后面存在[],则表示根据默认优先级或认为设定的优先级采用对应包里的函数。

如果函数后面没有[],如lag函数,使用时就需要按上面2种方式的一种设置具体调用或优先调用哪个包里的lag函数。

conflict_scout()
#> 6 conflicts:
#> * `filter`   : [dplyr]
#> * `intersect`: [dplyr]
#> * `lag`      : dplyr, stats
#> * `setdiff`  : [dplyr]
#> * `setequal` : [dplyr]
#> * `union`    : [dplyr]

标签:dplyr,函数,好好,代码,prefer,filter,冲突,conflicted,cyl
From: https://blog.csdn.net/qazplm12_3/article/details/141432554

相关文章

  • 安防视频监控EasyCVR视频汇聚平台出现代码层面报错“panic:runtime error”的原因排查
    安防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台基于云边端一体化架构,兼容性强、支持多协议接入,包括国标GB/T28181协议、部标JT808、GA/T1400协议、RTMP、RTSP/Onvif协议、海康Ehome、海康SDK、大华SDK、华为SDK、宇视SDK、乐橙SDK、萤石云SDK等。有用户反馈,启动EasyCVR......
  • android调用h5代码步骤
    要在Android应用中调用H5代码,可以使用WebView来加载并执行H5代码。以下是一个简单的示例:首先,在你的Android项目中的布局文件中添加一个WebView组件:```xml<WebView  android:id="@+id/webview"  android:layout_width="match_parent"  android:layout_height="......
  • 基于ssm+vue.js的校园二手交易平台附带文章和源代码设计说明文档ppt
    文章目录前言详细视频演示具体实现截图技术栈后端框架SpringBoot前端框架Vue持久层框架MyBaitsPlus系统测试系统测试目的系统功能测试系统测试结论为什么选择我成功案例代码参考数据库参考源码获取前言......
  • 耗时一天,逆天数字华容道代码
    \(O(n^3)\)处理\(n\timesn\)数字华容道还原(可能无解)。具体实现看代码:solve.cpp#include<bits/stdc++.h>usingnamespacestd;#definefifirst#definesesecondconstintN=201;intn,l,r,L,R;booltype;vector<vector<int>>a,res;vector<p......
  • 数据结构链表入门指南 链表基本代码实现以及测试步骤
    链表介绍链表是一种数据结构,它由一系列节点组成,每个节点包含数据部分和指向下一个节点的指针。链表的基本特性包括:动态大小:链表的大小可以根据需要动态调整,不像数组那样需要事先定义固定大小。节点连接:每个节点通过指针连接到下一个节点,从而形成一个链状结构。灵活插入和......
  • gitlab上dev分支的代码更新覆盖到test分支
    在GitLab上,如果你想要将dev分支上的代码更新覆盖到test分支,可以通过以下步骤进行:确保你的本地仓库是最新的:使用gitfetch命令从远程仓库获取最新的分支列表和提交。gitfetchorigin切换到test分支:切换到你想要更新的分支。gitcheckouttest合并dev分支:将dev分支......
  • 代码随想录 -- 数组 -- 螺旋矩阵II
    59.螺旋矩阵II-力扣(LeetCode)每画一条边都要坚持一致的左闭右开注意处理n为奇数时的矩阵中心点classSolution(object):defgenerateMatrix(self,n):res=[[0]*nforainrange(n)]startX=0startY=0loop=mid=n/2c......
  • 代码随想录 -- 数组 -- 区间和
    58.区间和(第九期模拟笔试)(kamacoder.com)暴力解法大概率超时,应采用前缀和解法p[i] 表示vec[0]到vec[i]的累加和求vec[m] 到vec[n] 的和只需要 p[n]-p[m] 即可知识点input函数Python3 中raw_input()和input()进行了整合,去除了raw_input(),仅保留了i......
  • WPF中如何使用后台代码动态创建数据模板(DataTemplate)
    数据模板回顾 在WPF中数据模板可以控制数据的呈现方式。对于一些简单的数据,例如一个string,一个int,在显示时,无须额外控制。但是对于复杂数据类型,就需要使用数据模板来控制数据的呈现方式。 一个很简单的例子假设我们定义了一个学生类1publicclassStudent2......
  • 代码随想录day37 || 518 零钱兑换,377 组合总和iv,70 爬楼梯
    0-1背包问题在0-1背包问题中,每种物品只能选择一次,因此一旦选择某个物品后,剩余的容量只能放入前面的物品。这就是为什么状态转移方程是:dp[i][j]=max(dp[i-1][j],dp[i-1][j-w(i)]+v(i))这里的dp[i-1][j-w(i)]+v(i)表示选择第(i)个物品后,剩余的容量只能放入前(......