为什么 rownames(installed.packages()) 有一个名称属性?

2023-12-27

我有以下功能供个人使用。它需要输入作者的名字来查看我的机器上是否有他们的任何软件包。

authoredPackages <- function (author) 
{
    s <- sapply(rownames(installed.packages()), 
        packageDescription, fields = "Author")
    names(grep(author, s, value = TRUE))
}

问题就在这里。打开新的 R 会话并分配函数后,第一次调用该函数always返回一个由空字符串组成的字符向量以及它应该返回的向量的正确长度。要显示这一点,请打开一个新的 R 会话,分配该函数,然后使用您最喜欢的包作者的姓氏运行它。它应该首先返回一个空字符向量......

authoredPackages("Temple Lang")
# [1] "" "" "" ""

...然后再做一次,它会返回正确的结果...

authoredPackages("Temple Lang")
# [1] "jsonlite" "RCurl"    "RJSONIO"  "XML"    

它始终只发生在新 R 会话中的第一次调用时。为什么会发生这种情况?如何修复它,以便该函数在第一次尝试时始终有效?

My R --vanilla会话信息:

R version 3.1.1 (2014-07-10)
Platform: x86_64-pc-linux-gnu (64-bit)

locale:
 [1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C              
 [3] LC_TIME=en_US.UTF-8        LC_COLLATE=en_US.UTF-8    
 [5] LC_MONETARY=en_US.UTF-8    LC_MESSAGES=en_US.UTF-8   
 [7] LC_PAPER=en_US.UTF-8       LC_NAME=C                 
 [9] LC_ADDRESS=C               LC_TELEPHONE=C            
[11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C       

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base 

Update:打开 R 后,似乎rownames(installed.packages()) has a names属性,因为lme4包裹。不知道为什么,这是唯一的名字。也很奇怪,第二次打电话的时候它就消失了。

rownames(installed.packages())[228]
#   ret0 
# "lme4"

奇怪,但看起来像rownames(installed.packages()) has a names第一次调用它时的属性。

> str(rownames(installed.packages()))
 Named chr [1:125] "bdsmatrix" "bitops" "blotter" "brew" "car" "changepoint" "chron" "colorout" ...
 - attr(*, "names")= chr [1:125] "" "" "" "" ...
> str(rownames(installed.packages()))
 chr [1:125] "bdsmatrix" "bitops" "blotter" "brew" "car" "changepoint" "chron" "colorout" "colorspace" ...

抱歉,这个问题留给你来回答了。只要确保没有名字即可。这对你来说是个问题,因为你依赖sapply的默认值是USE.NAMES=TRUE,但这只会添加尚不存在的名称。他们的出现是出于一些非常奇怪的原因。

authoredPackages <- function (author) 
{
    r <- setNames(rownames(installed.packages()), NULL)
    s <- sapply(r, function(x) packageDescription(x)$Author)
    names(grep(author, s, value = TRUE))
}

这是我的sessionInfo(从开始R --vanilla):

> sessionInfo()
R version 3.1.1 (2014-07-10)
Platform: x86_64-pc-linux-gnu (64-bit)

locale:
 [1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C              
 [3] LC_TIME=en_US.UTF-8        LC_COLLATE=en_US.UTF-8    
 [5] LC_MONETARY=en_US.UTF-8    LC_MESSAGES=en_US.UTF-8   
 [7] LC_PAPER=en_US.UTF-8       LC_NAME=C                 
 [9] LC_ADDRESS=C               LC_TELEPHONE=C            
[11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C       

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

loaded via a namespace (and not attached):
[1] tools_3.1.1

我刚刚升级到 R-3.1.2 并再次尝试。我仍然得到相同的奇怪结果,并且如果我使用,我会一致地得到它们@马丁摩根 https://stackoverflow.com/questions/27116593/why-does-rownamesinstalled-packages-have-a-names-attribute/27116647#comment42737154_27116593的使用建议noCache=TRUE.

> str(rownames(installed.packages(noCache=TRUE)))
 Named chr [1:125] "bdsmatrix" "bitops" "blotter" "brew" "car" "changepoint" "chron" "colorout" ...
 - attr(*, "names")= chr [1:125] "" "" "" "" ...
> str(rownames(installed.packages(noCache=TRUE)))
 Named chr [1:125] "bdsmatrix" "bitops" "blotter" "brew" "car" "changepoint" "chron" "colorout" ...
 - attr(*, "names")= chr [1:125] "" "" "" "" ...
> str(rownames(installed.packages(noCache=TRUE)))
 Named chr [1:125] "bdsmatrix" "bitops" "blotter" "brew" "car" "changepoint" "chron" "colorout" ...
 - attr(*, "names")= chr [1:125] "" "" "" "" ...
> sessionInfo()
R version 3.1.2 (2014-10-31)
Platform: x86_64-pc-linux-gnu (64-bit)

locale:
 [1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C               LC_TIME=en_US.UTF-8        LC_COLLATE=en_US.UTF-8    
 [5] LC_MONETARY=en_US.UTF-8    LC_MESSAGES=en_US.UTF-8    LC_PAPER=en_US.UTF-8       LC_NAME=C                 
 [9] LC_ADDRESS=C               LC_TELEPHONE=C             LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C       

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] setwidth_1.0-3 colorout_1.0-1

loaded via a namespace (and not attached):
[1] tools_3.1.2
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么 rownames(installed.packages()) 有一个名称属性? 的相关文章

  • picker输入字体或背景颜色

    我在闪亮的仪表板中使用 pickerInput 这很好 除了一个问题 背景颜色和字体颜色太相似 使得过滤器选择难以阅读 有什么办法可以改变背景或字体颜色吗 如果可能的话 我想继续使用 pickerInput 但如果有一个带有 selectI
  • 将列表中的每个元素转换为数据框中的一列

    假设我有以下列表 d library combinat d permn c a b c 这看起来如下 1 1 a b c 2 1 a c b 3 1 c a b 4 1 c b a 5 1 b c a 6 1 b a c 是否可以将此列表的
  • `as.matrix` 和 `as.data.frame` S3 方法与 S4 方法

    我注意到定义as matrix or as data frame作为 S4 类的 S3 方法 使例如lm formula objS4 and prcomp object 开箱即用 如果它们被定义为 S4 方法 则这不起作用 为什么将方法定义
  • 行对名称中具有特定模式的列求和

    我有一个像这样的数据表 DT lt ata table data table ref rep 3L 4L nb 12 15 i1 c 3 1e 05 0 044495 0 82244 0 322291 i2 c 0 000183 0 155
  • R Shiny:如何将无功值从闪亮模块返回到主服务器功能?

    我有一个简单的玩具示例 它使用 add removeBtn 模块在 第一个 模块中添加和删除 UI 我需要跟踪单击 添加 删除 的次数 如果我不使用模块 这很容易 但我试图在嵌套模块的上下文中执行此操作 代码如下 但基本上 我似乎无法访问主
  • R ggplot 中的柯尔莫哥洛夫-斯米尔诺夫图

    我正在尝试在 r 中绘制 KS 图 一切似乎都很顺利 除了我只能使用颜色来可视化两个不同的样本而不是线型这一事实 我已经尝试过以下方法 sample1 lt SD13009 sample2 lt SD13009PB group lt c r
  • sapply - 保留列名称

    我试图总结数据集中许多不同列 变量 的平均值 标准差等 我已经编写了自己的汇总函数 以准确返回我需要和正在使用的内容sapply立即将此函数应用于所有变量 它工作正常 但是返回的数据帧没有列名 我似乎甚至无法使用列号引用重命名它们 也就是说
  • 从 data.frame 在 ggplot 图例中添加信息

    我想在图例中添加信息 哪个传感器具有该值 这是我的代码 z lt data frame a c sensor 1 sensor 2 sensor 3 sensor 4 sensor 5 sensor 6 sensor 7 sensor 8
  • R,使用具有两种以上可能性的二项式分布

    我知道这可能是基本的 但我似乎有一个心理障碍 假设您想要计算在一个骰子上掷出 4 5 或 6 的概率 在 R 中 这很简单 sum 1 6 1 6 1 6 这给出了 1 2 这是正确答案 然而 我内心深处 可能应该保留的地方 认为我应该能够
  • 在包加载之前如何知道 R 中特定函数属于哪个包?

    例如 我知道许多流行的功能 例如tbl df 我通常不记得它属于哪个包 即data table or dplyr 所以我必须始终记住并加载一个包 但我做不到 tbl df除非我加载了正确的包 在 R 控制台本身加载或安装包之前 有没有办法知
  • 要在子集中显示的非数字条目的维恩图

    我有以下数据框 SET1 SET2 SET3 par1 par2 par1 par2 par3 par2 par3 par4 par5 我想制作一个维恩图 其中所有这些 parX 元素都显示在各自的子集中 即作为标签 而不仅仅是重叠元素的数
  • 使用数据帧的 R 中的 EWMA 波动性

    我正在尝试从一系列股票每日收益中获取 EWMA 波动性 这些收益来自一个名为base retorno diario Data IBOV ABEV3 AEDU3 ALLL3 BBAS3 BBDC3 BBDC4 1 2000 01 04 0 0
  • R 改变构面的顺序

    我正在尝试将方面的顺序从 BA SLG 更改为 SLG BA 我发现了与此类似的问题 但我认为我的解决方案可能不起作用 因为我已经在Excel中汇总了数据 因此 我的数据框可能会有所不同 无论如何 我尝试实现这个但无济于事 df2 lt f
  • 如何像在facet_grid中一样在facet_wrap中定位条带标签

    我想在使用时删除多余的条带标签facet wrap 并用两个变量进行分面 并且都是自由尺度的 例如 这个facet wrap下图的版本 library ggplot2 dt lt txhousing txhousing year in 20
  • rvest 函数 html_nodes 返回 {xml_nodeset (0)}

    我正在尝试抓取以下网站的数据框 http stats nba com game 0041700404 playbyplay http stats nba com game 0041700404 playbyplay 我想创建一个表格 其中包
  • 无法将“gather”输出的列名称更改为默认名称以外的任何名称

    我正在尝试使用gather in the tidyr包 但我无法更改默认名称的输出列名称 例如 df data frame time 1 100 a 1 100 b 101 200 df long df gt gather foo bar
  • 将整个包传递给雪簇

    我正在尝试并行化 使用snow parLapply 一些依赖于包 即除snow 调用函数中引用的对象parLapply必须使用显式传递给集群clusterExport 有没有办法将整个包传递到集群 而不必显式命名每个函数 包括用户函数调用的
  • R:改变堆积条形图的颜色

    library ggplot2 df2 lt data frame supp rep c VC OJ each 3 dose rep c D0 5 D1 D2 2 len c 6 8 15 33 4 2 10 29 5 head df2 g
  • 安装 2.15 后 ggplot2 中的 alpha 通道不起作用

    更新到 R 2 15 后 ggplot 中的 alpha 通道似乎不再起作用 plot rnorm 100 rnorm 100 bg cc000055 pch 21 工作得很好但是 qplot rnorm 100 rnorm 100 col
  • 使用“assign()”为列表项分配值

    首先了解一些背景 我写了一个中缀函数 本质上取代了这个习惯用法 x length x 1 lt y 或者简单地说x lt append x y 对于向量 这里是 lt function x y xcall lt substitute x x

随机推荐

  • 特征和序列化/反序列化

    假设我有两个特征想混合到一个班级中 每个特征都实现类需要的抽象方法 trait Writable def serialize out java io DataOutput trait T1 extends Writable trait A
  • 从POJO获取注释hibernate表名

    我有一个实体 其声明大致如下 Entity Table name myUserTable public class User implements Serializable 我正在创建一个通用 DAO 类 在此过程中我想检索 myUserT
  • 在这种情况下如何获得 foreach 循环之外的值?

    我试图从 mysql 数据中调用 foreach 循环中的所有值 并将该值输入到另一个 mysql select 语句中 看看我下面的代码 它只能收集一个值 我想使用第一个 foreach 循环来包含整个部分 但是 因为 foreach 值
  • 如何调整 GLUT 窗口的大小?

    from OpenGL extensions import alternate from OpenGL GL import from OpenGL GL ARB multitexture import from OpenGL GLU imp
  • 如何使用表达式构建匿名类型?

    在 C 3 0 中 您可以使用表达式创建具有以下语法的类 var exp Expression New typeof MyClass var lambda LambdaExpression Lambda exp object myObj l
  • 使用 QT 的任务计划程序 API

    我想实现一个基于定期日期的任务调度程序 有没有办法使用 QT 的 API 来实现它 另一个问题 我应该指定windows当前用户的用户名和密码吗 如果您想使用 Windows 任务计划程序 则需要使用 COM API http msdn m
  • 如何以编程方式将按钮添加到片段

    我无法设法以编程方式向片段添加按钮 按钮数量可变 我尝试使用 an addView 方法将按钮添加到 rootView 但没有 我尝试在充气之前将按钮添加到布局中 但我不知道如何获取布局 类型 id 错误的预期资源 RelativeLayo
  • 动画结束后我该怎么做?

    我有一个ImageView我用它来通过AnimationDrawable 当我想显示我的进度旋转器时 我这样做 animDrawable start ObjectAnimator ofFloat view alpha 1 0f setDur
  • 当具有该名称的文件已经存在时,如何防止 Django 更改文件名?

    就我而言 我允许用户上传头像图片并使用 user id 作为文件名 简单地说 所以就会有1 jpg 2 jpg等 但是我发现 如果我为某个已上传头像的帐户 假设用户 10 上传新头像 新文件将被命名为 10 1 jpg 这没关系 但是我不需
  • Bootstrap 选项卡中的多个 Google 地图

    我有一个引导选项卡结构 每个选项卡内都有一个谷歌地图 iframe 第一个选项卡的 iframe 看起来不错 但其他选项卡看起来未缩放且未居中 这与 iframe src 代码无关 因为我尝试用第二个和其他代码替换第一个 第一个总是工作得很
  • C++ 我需要在任何地方为函数编写 throw 子句吗?

    Before 考虑有一个类和一个全局函数 例如 这是usefulfuncts hpp void dosome int a int b throw std exception This is usefulfuncts cpp void dos
  • 如何在 SQL 中将表连接到自身并选择最大值

    我有一个contracts table contractId date price partId 1 20120121 10 1 2 20110130 9 1 3 20130101 15 2 4 20110101 20 2 最大的合同dat
  • Bootstrap 轮播与 morris.js 图表冲突?

    我正在使用 morris js 绘制图表 并且我想通过引导轮播显示这些图表 但是如果我这样做 Firefox 将停止响应 它们单独工作可以很好 但如果放在一起就会崩溃 firebug 告诉我有一些与 Raphael 图书馆有关的事情 但我仍
  • 适用于 Android 和 IOS 的 HighChart 库 [已关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我想在 Android 和 iOS 移动应用程序中使用 HighCharts Android 或 iOS
  • 将函数指针“转换”为 Objective-C 中的块

    我正在做一些从 Mono C 到 Obj C 的互操作 并遇到了这个问题 C 代码需要传递回调 它使用函数指针来执行此操作 我可以从 Obj C 端获取函数指针并调用它 一切正常 但我现在需要将该函数指针作为回调提供给第三方 API 该 A
  • Xcode 4.5 - OS X Cocoa 应用程序 - 基本 Web 视图:打开时加载 Google

    我正在尝试创建一个极其基本的 OS X Cocoa 应用程序 该应用程序在打开时会加载http www google com http www google com 尽可能基本 没有后退或前进按钮等 我对 Xcode 4 5 的经验很少 并
  • 如何在反序列化“设置”对象时更新 WPF UI

    我的目标是这样做 用户选择设置文件 读取设置并相应更新 UI 显然 节省也应该是可能的 我的程序当前不是 WPF XAML 现在执行此操作意味着在需要新设置时需要进行大量重复和添加工作 所以有人告诉我 WPF XAML 是正确的选择 我研究
  • 在 C++ 中实现“有限通用性”

    我正在将一个项目从 Java 转移到 C 但我在 Java 中相对简单的东西上遇到了问题 我有课X它是为了处理类型的对象而设计的Y以及继承自的对象Y X经常需要调用方法Y say kewl method 并且这个方法在继承自的每个类中都是不
  • SQLite数据库-选择两个日期之间的数据?

    我想按日期选择数据 从一个日期到另一个日期 所以我有这个查询 SELECT FROM mytalbe WHERE date BETWEEN 2014 10 09 AND 2014 10 10 但这个查询只返回数据 2014 10 09 排除
  • 为什么 rownames(installed.packages()) 有一个名称属性?

    我有以下功能供个人使用 它需要输入作者的名字来查看我的机器上是否有他们的任何软件包 authoredPackages lt function author s lt sapply rownames installed packages pa