S3方法帮助(roxygen2)

2024-02-25

我正在尝试在包中使用 S3 方法,并认为在此处提出问题后我明白了如何设置它:使用 Roxygen 构建 R 包时 S3 方法一致性警告 https://stackoverflow.com/questions/14237018/s3-method-consistency

但现在我得到了我意想不到的结果。如果我直接在 R 中运行下面的代码,它会给出预期的结果,但如果我将其编译到包中,我不会得到正确的结果(注意单词 the 被计数两次,而它应该只采用来自的唯一单词)vector a)。我不确定我设置不正确。

.R 文件:

#' Find Common Words Between Groups
#' 
#' Find common words between grouping variables (e.g. people).
#' 
#' @param word.list A list of names chacter vectors.
#' @param overlap Minimum/exact amount of overlap.
#' @param equal.or A character vector of c(\code{"equal"}, \code{"greater"}, 
#' \code{"more"}, \code{"less"}).
#' @param \dots In liu of word.list the user may input n number of character 
#' vectors.
#' @rdname common
#' @return Returns a dataframe of all words that match the criteria set by 
#' \code{overlap} and \code{equal.or}.
#' @export
#' @examples
#' \dontrun{
#' a <- c("a", "cat", "dog", "the", "the")                                                              
#' b <- c("corn", "a", "chicken", "the")                                                                
#' d <- c("house", "feed", "a", "the", "chicken")                                                       
#' common(a, b, d, overlap=2)  
#' common(a, b, d, overlap=3)                                                                          
#'                                                                                                      
#' r <- list(a, b, d)  
#' common(r)                                                                                 
#' common(r, overlap=2)                                                                                            
#'                                                                                                     
#' common(word_list(DATA$state, DATA$person)$cwl, overlap = 2) 
#' } 
common <-
function(word.list, ...){
    UseMethod("common")
}

#' @return \code{NULL}
#'
#' @rdname common
#' @method common list
common.list <-
function(word.list, overlap = "all", equal.or = "more", ...){
    if(overlap=="all") {
        OL <- length(word.list) 
    } else {
        OL <- overlap
    }
    LIS <- sapply(word.list, unique)
    DF <- as.data.frame(table(unlist(LIS)), stringsAsFactors = FALSE)
    names(DF) <- c("word", "freq")
    DF <- DF[order(-DF$freq, DF$word), ]
    DF <- switch(equal.or,
        equal = DF[DF$freq == OL, ],
        greater = DF[DF$freq > (OL - 1), ],
        more = DF[DF$freq > (OL - 1), ],
        less = DF[DF$freq < (OL + 1), ])
    rownames(DF) <- 1:nrow(DF)
    return(DF)
}

#' @return \code{NULL}
#'
#' @rdname common
#' @method common default
#' @S3method common default  
common.default <-
    function(..., overlap = "all", equal.or = "more", word.list){
        LIS <- list(...)
        return(common.list(LIS, overlap, equal.or))
}


a <- c("a", "cat", "dog", "the", "the")                                                              
b <- c("corn", "a", "chicken", "the")                                                                
d <- c("house", "feed", "a", "the", "chicken")                                                       
common(a, b, d, overlap=2)  


r <- list(a, b, d)                                                                                   
common(r, overlap=2)                                                                                            

从命令行运行代码(预期行为):

> common(a, b, d, overlap=2)  
     word freq
1       a    3
2     the    3
3 chicken    2
>                                                                           
>                                                                                                      
> r <- list(a, b, d)                                                                                   
> common(r, overlap=2)                                                                                            
     word freq
1       a    3
2     the    3
3 chicken    2

包编译后输出:

> a <- c("a", "cat", "dog", "the", "the")                                                              
> b <- c("corn", "a", "chicken", "the")                                                                
> d <- c("house", "feed", "a", "the", "chicken")                                                       
> common(a, b, d, overlap=2)  
     word freq
1       a    3
2     the    3
3 chicken    2
>                                                                           
>                                                                                                      
> r <- list(a, b, d)                                                                                   
> common(r, overlap=2)                                                                                            
     word freq
1     the    4
2       a    3
3 chicken    2

您看到的错误很可能是由于通用泛型的列表方法未导出而引起的,因此common.default而是被调用。您可以使用以下方法解决此问题devtools::missing_s3- 该函数有点启发式,因此您可能会得到一些误报(例如,它当前无法判断is.list不是一种方法)。这是一个非常常见的问题(我已经遇到过很多次了),roxygen 的下一次迭代将采取更多措施来防止它。

目前,要使用 roxygen 正确导出 S3 方法,您需要执行以下任一操作:

  • @S3method generic class(仅此而已)如果您不想记录该方法
  • @method generic class and @export如果您想导出并记录它。

你不应该有@S3method and @method在同一个文档块中。

roxygen2 更新 >3.0.0

现在,roxygen 会自动判断某个函数是否是 S3 方法,因此:

  • 切勿使用@S3method or @method
  • Use @export如果您希望导出该方法(您通常会这样做,即使泛型不是)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

S3方法帮助(roxygen2) 的相关文章

  • 使用 lpSolve 优化 R 团队名单

    我是 R 新手 有一个想要解决的特定幻想运动队优化问题 我见过其他帖子使用 lpSolve 来解决类似的问题 但我似乎无法理解代码 下面的示例数据表 每个球员都在一个球队中 扮演着特定的角色 有薪水 并且每场比赛都有平均得分 我需要的限制是
  • 使用 SP 包中的 SpatialPoints() 转换坐标参考系 (CRS) 以创建空间数据框

    Issue 我有一个形状文件我已将其导入到 R 中 并为正在进行的分析选择了感兴趣的变量 我的最终目标是插值点数据 海豚 ID 获取海面温度 SST 堆栈中每个单独的光栅文件的值70 栅格来自名为 ncin SST 的对象 该对象是使用函数
  • R tm 包创建 N 个最常见术语的矩阵

    我有一个termDocumentMatrix使用创建的tmR 中的包 我正在尝试创建一个包含 50 个最常出现的术语的矩阵 数据框 当我尝试转换为矩阵时 出现此错误 gt ap m lt as matrix mydata dtm Error
  • R Shiny UI 子选项复选框?

    我有一个基本的 RShiny 应用程序 它有一个反应式复选框 它根据复选框中选择的数据 df 列 绘制时间序列数据 我当前的代码生成一个带有复选框输入的 UI 如下所示 Load R packages library shiny libra
  • 读取多个 CSV 文件,并在文件开头跳过不同行数

    我必须阅读大约 300 个单独的 CSV 我已经成功使用循环和结构化 CSV 名称来自动化该过程 然而 每个 CSV 在开头都有 14 17 行垃圾 并且随机变化 因此在 read table 命令中硬编码 skip 参数将不起作用 每个
  • R:构建二阶转移矩阵和得分序列

    其他问题 有另一个问题 https stackoverflow com questions 29728436 fit and evaluate a second order transition matrix markov process
  • 如何在R中的2行之间交换多个值

    我有一个大小为 10x100 的矩阵 如何交换前 30 列中第 1 行和第 2 行之间的值 我们可以反转前两行的行索引以及通过采取序列创建的列索引rounded 30 总列数用于交换行中的值 colS lt seq round ncol m
  • 不理解..密度的行为

    在下面的数据框中 我预计密度的 y 轴值为 0 6 和 0 4 但它们是 1 0 我觉得我使用的方式显然缺少一些非常基本的东西 密度 但是我的大脑冻结了 我将如何使用 密度 获得所需的行为 任何帮助将不胜感激 df lt data fram
  • 递归累积函数

    我需要在 R 中编写一个累积求和函数 但我一直碰壁 该函数具有以下结构 a x1 a x2 a 2 x1 a x3 a 2 x2 a 3 x1 a x4 a 2 x3 a 3 x2 a 4 x1 等等 cumsum 似乎不适用于此类功能 有
  • 确定 R 中的组是否重复某个值

    我有一个包含许多列和行的数据 我想通过创建新的逻辑变量来确定某个组的值是否重复 相同 所以我的数据如下所示 v0 lt c 1 2 3 4 5 6 7 8 9 v1 lt c a b a c e c b b e v2 lt c R NA R
  • R 和 Python 中 LU 分解结果不一致

    我有以下矩阵A in R 1 2 3 4 1 1 1527778 0 4444444 0 375 0 3333333 2 0 5555556 1 4888889 0 600 0 3333333 3 0 6250000 0 4000000 1
  • Mac OS X 10.13 上的 RStudio 在尝试使用 fix() 时出现 X11 不可用错误

    我已经使用自制程序在我的计算机上安装了 XQuartz 然后重新启动了我的计算机 当我尝试在 RStudio 中使用 fix 命令时 出现以下错误 gt College read csv College csv header T na st
  • R 抑制系统或 shell 命令的控制台输出

    我有这个 Windows 批处理文件 我使用 R 从 R 调用该文件shell 命令 该批处理文件执行一些计算并将它们写入磁盘上 也写入屏幕上 我只对磁盘输出感兴趣 我无法更改批处理文件 批处理文件可能有点愚蠢 例如 echo off ec
  • R 中 x 轴曲线的阴影面积

    所以我有一个位于 x 轴下方和上方的图表 并且想要对线和 0 之间的区域进行着色 在这里 我尝试使用多边形函数 但它只给出曲线下的面积 plot year difference1 type l polygon year difference
  • 如何在environment.yml中安装CRAN包

    我正在使用 miniconda 来管理数据科学包的安装 这是我现在已经建立的工作流程 所以我希望它也能在这种情况下工作 我也认为它可以工作 因为它应该在这样的情况下有所帮助 比纯 python 需要更多的依赖项 我想安装pythonCDT工
  • 获取行名以 ABC111 开头的所有行

    我们有以下数据框 col1 col2 col3 ABC111001 12 12 13 ABC111002 3 4 5 ABC000111 7 6 1 ABC000112 9 23 1 如何获取行名以 开头的所有行ABC111 如下 ABC1
  • 如何拆分 data.frame -> 将合并应用于子集 -> 合并到 data.frame 中

    我真的不知道如何在不使用 for 循环的情况下实现这一目标 x lt c a b c d gt x 1 a b c d data lt data frame x c a b a b c a a b c d name c one one tw
  • R.scale() 和 sklearn.preprocessing.scale() 之间的区别

    我目前正在将数据分析从 R 转移到 Python 当在 R 中缩放数据集时 我将使用 R scale 根据我的理解 它将执行以下操作 x mean x sd x 为了替换该函数 我尝试使用 sklearn preprocessing sca
  • 为“facet_wrap”中的每列创建边框和标题

    我想在每个方面周围放置带有标签和标题的黑色边框facet wrap 与此类似的东西 样本数据 library tidyverse mtcars gt mutate gear factor gear levels c 4 3 5 gt ggp
  • 无法使用 cairo 安装 R

    我正在从源代码安装 R cd R 3 2 2 configure prefix pwd with cairo yes with readline no with libpng yes with x no 我已经从源代码安装了 cairo v

随机推荐

  • SwipeRefreshLayout + 另一个视图

    我的布局设置如下
  • 有没有办法防止 JavaScript/jQuery 中的元素失去焦点?

    focusout blur 事件仅在元素失去焦点后触发 顺便说一句 我更喜欢不使用插件来做到这一点 是的 你可以使用这个
  • Firebase 扇出 - 最具成本效益的方法?

    我知道这个问题可能已被多次提出 但我已阅读了大多数可用的问题 但没有找到任何可以完全帮助回答我的问题的问题 正如 Firebase 团队提出的 扇出技术是确保快速数据读取的推荐方法 但会带来数据复制的成本 我知道这个问题是主观的 取决于应用
  • 您最喜欢的 SVN Web 应用程序部署工作流程是什么?

    我们目前使用的部署设置有些复杂 涉及远程 SVN 服务器 用于 DEV STAGE 和 PROD 的 3 个 SVN 分支 通过补丁等在它们之间提升代码 我想知道在小型开发团队的情况下您使用什么进行部署 主干用于开发 分支 生产 用于生产
  • 将 MultiIndex 列合并到 pandas 数据框中的单个索引

    在我的代码中 我将 2 个数据库集成到 1 个数据库中 问题是当我向数据库中再添加一列时 结果与预期不符 使用Python 2 7 code import pandas as pd import pandas io formats exce
  • laravel 会话返回 null 尽管设置它

    只是原生 php 中的一个简单函数 protected function some function session start if isset SESSION a SESSION a some value return true els
  • 如何让我的班级充满活力?

    我想要一个带有一个附加属性的字符串 比如说是以红色还是绿色打印它 子类化 str 不起作用 因为它是不可变的 我看到了它的价值 但它可能很烦人 多重继承有帮助吗 我从来没有用过那个 仅继承 object 并使用 self value str
  • 什么可能导致 imagecolorsforindex() 出现“颜色索引超出范围”错误?

    当对一大堆 JPG PNG 和 GIF 文件进行补丁大小调整时 PHP 意外地死机 并显示以下错误消息 imagecolorsforindex function imagecolorsforindex 颜色索引 226 超出范围 相关代码片
  • AspectJ - 更改方法参数的值

    我想要这样的东西 public void doSomething ReplaceFooBar String myString ReplaceFooBar是我的自定义注释 其值应为myString并做一个replaceAll在方法开始执行之前
  • PipEnv:如何处理本地安装的 .whl 包

    我正在使用 PipEnv 设置一个项目 以及一些我需要从预编译的二进制文件安装的包 在以前的项目中 我只是将某些本地文件夹中的 whl 文件安装到我的环境中 但这似乎会导致锁定文件出现问题 如果其他人尝试从存储库安装 因为 pipfile
  • 使用 -NoExit 启动 PowerShell 不起作用

    需要在 PowerShell 中启动多个作业 但它们应该位于不同的会话中 因此 要启动一个 可以使用 Start Process powershell ArgumentList command Get Process noexit nopr
  • 在 woocommerce 结帐页面自定义字段中添加日期

    我正在尝试在 woocommerce 结帐页面中添加自定义选择选项 它正在添加额外的字段 但我想在选择选项的值中添加日期 有什么解决办法吗 这是我在主题 function php 中添加的代码 today new DateTime tomo
  • tfs:如何解锁更改

    我最初编辑了一个文件 该文件进行了结帐 我收到了一台新电脑 现在我想编辑该文件 我不关心原始编辑 TFS 报告另一个用户对该文件具有独占锁定 它实际上不是另一个用户 而是我 但机器不同 因此工作空间不同 我尝试使用以下命令通过 tf 命令行
  • 在海量数据集上学习决策树

    我正在尝试使用 MATLAB 从巨大 即无法存储在内存中 数据集构建二元分类决策树 本质上 我正在做的是 收集所有数据 Try out n数据的决策函数 选出最佳决策函数 https stackoverflow com questions
  • 为不受支持的语言选择本地化

    我有 en 和 ru 语言的本地化 如果用户选择任何其他语言 fr de 我需要显示俄语本地化变体 我尝试将 info plist 中的 本地化本机开发区域 更改为 ru 俄语 但在使用不受支持的语言时 它始终显示英语 有相关问题 http
  • iFrame 内的 cordova 回调

    我使用 cordova 和 nanohttpd 创建了一些 Android Web 应用程序 主页是通过 localhost url 从 nanohttp 加载的 主页包含一个 iFrame 它从与主页相同的域 localhost 加载一些
  • 将 nd 数组转换为键、值字典

    python中是否有一个函数可以将nd数组转换为字典 其中key是索引元组 value是该索引处的矩阵值 例如 A np random random 3 4 5 Result i j k A i j k 当然 你可以使用np ndenume
  • 在 iPhone SDK 中实现 Core-Plot 时出现错误:“CorePlot-CocoaTouch.h:没有这样的文件或目录”

    当我尝试在 iPhone 应用程序中实现 Core Plot 时 出现以下错误 CorePlot CocoaTouch h 没有这样的文件或目录 我从下面的链接下载安装了 Core plot 包 http code google com p
  • 通过电子邮件将 Sparkline 图表作为 Google Sheets 范围内的图像/博客/png 发送

    我尝试将此解决方案应用于我的案例 通过电子邮件发送 SPARKLINE 图表会发送空白单元格而不是数据 https stackoverflow com questions 50133870 emailing sparkline charts
  • S3方法帮助(roxygen2)

    我正在尝试在包中使用 S3 方法 并认为在此处提出问题后我明白了如何设置它 使用 Roxygen 构建 R 包时 S3 方法一致性警告 https stackoverflow com questions 14237018 s3 method