为什么 sapply() 返回一个列表?

2024-03-04

我遇到了一个奇怪的行为R http://en.wikipedia.org/wiki/R_%28programming_language%29sapply()功能。该函数应该返回一个向量,但在给它一个空向量的特殊情况下,它会返回一个列表。

向量的正确行为:

a = c("A", "B", "C")
a[a == "B"]  # Returns "B"
a[sapply(a, function(x) {x == "B"})] # Returns "B"

NULL 值的正确行为:

a = NULL
a[a == "B"]  # Returns NULL
a[sapply(a, function(x) {x == "B"})] # Returns NULL

空向量的奇怪行为:

a = vector()
a[a == "B"]  # Returns NULL
a[sapply(a, function(x) {x == "B"})] # Erreur : type 'list' d'indice incorrect

与此语句相同的错误消息:

a[list()] # Erreur dans a[list()] : type 'list' d'indice incorrect

为什么?这是一个错误吗?

由于这种奇怪的行为,我使用unlist(lapply()).


真正的原因是sapply不知道你的函数在不调用它的情况下会返回什么。在你的情况下,该函数返回一个logical, 但是由于sapply给出一个空列表,该函数永远不会被调用。因此,它必须想出一个类型,并且默认为list.

...正是出于这个原因(以及性能),vapply被介绍了!它要求您指定返回值类型(和长度)。这使得它能够做正确的事情。作为奖励,它也更快!

sapply(LETTERS[1:3], function(x) {x == "B"}) # F, T, F
sapply(LETTERS[0], function(x) {x == "B"})   # list()

vapply(LETTERS[1:3], function(x) {x == "B"}, logical(1)) # F, T, F
vapply(LETTERS[0], function(x) {x == "B"}, logical(1))   # logical()

See ?vapply了解更多信息。

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

为什么 sapply() 返回一个列表? 的相关文章

  • 循环遍历列并将字符串长度添加为新列

    我有一个包含多列的数据框 并且希望为每个列输出一个单独的列 其中包含每行的长度 我试图迭代列名称 并为每列输出一个附加有 length 的相应列 例如 col1 col2 将转到 col1 列2 col1 长度 列2 长度 我正在使用的代码
  • orderBy 随递减排序和递增排序的变化

    是否有一种标准方法可以按几列对 data frame 进行排序 但会发生减少或增加的变化 例如 您可能希望按一个变量 递减 和下一个变量 递增 对 data frame 进行排序 有没有类似的东西 mydf order mydf myvar
  • 在闪亮仪表板中显示/隐藏菜单项

    当进入应用程序时 我需要隐藏一个菜单项 当用户选择某个值时 菜单项必须出现 我努力了shinyjs功能hidden 并且它隐藏了一个 menuItem 但是当使用show or toggle 菜单项不会出现 我发现了Rshinydashbo
  • R、GeoJSON 和 Leaflet

    我最近从 R Bloggers com 的帖子中了解了 leafletjs com 我想要实现的一个此类教程是使用传单创建交互式分区统计图 http leafletjs com examples choropleth html http l
  • lme4:如何指定 2 个与随机截距的相关性,而不添加随机斜率之间的相关性

    重新发布自stats stackexchange com https stats stackexchange com q 195385 33560 我试图在 R 的 lme4 包中指定一个模型 其中随机截距和随机斜率之间有 2 个相关性 但
  • 评估 R 中字符串指向的函数

    假设我有以下内容 x lt 1 10 squared lt function x x 2 y lt squared 我希望能够使用 y 定义的字符串来评估该函数 像 eval y 这样的东西 我知道这是错误的 但会返回 1 1 4 9 16
  • 替换为 NA

    我有一个包含条目的数据框 看来这些值没有被视为 NA 因为 is na 返回 FALSE 我想将这些值转换为 NA 但找不到方法 Use dfr dfr
  • 不同的分位数:箱线图与小提琴图

    require ggplot2 require cowplot d iris ggplot2 ggplot d aes factor 0 Sepal Length geom violin fill black alpha 0 2 draw
  • 添加不同的标签以在 ggplot R 中的堆积条形图中显示总计?

    我的问题有点类似 如何添加文本标签以显示ggplot中堆叠比例条的每个条中的总数n https stackoverflow com questions 65201095 how to add text label to show total
  • corr.test 与 cor.test p 值

    我正在尝试使用 psych 包 psych 1 6 9 中的 corr test 但在使用 method spearman 时 它似乎给出了与 cor test 不同的 p 值 相关系数相同 但 p 值不同 我整理了一些示例代码和输出 如下
  • 两个闪亮的操作按钮

    我正在编写一个闪亮的函数 其中包含两个操作按钮 这两个按钮是左右按钮 单击时可以帮助绘图移动 第一次单击时 这两个按钮都工作正常 当我重新单击它们时 就会出现问题 无论我单击哪个按钮 它都会在两个范围之间来回弹跳 我猜可能是 右 和 左 按
  • 使用 dplyr 按组计算加权平均值(并复制其他方法)

    我对语法感到困惑dplyr当尝试计算加权平均值时 我听从大卫的建议here https stackoverflow com a 27609266 1457380 语法非常透明 因此很有吸引力 但它似乎没有按我的预期工作 低于加权平均值是针对
  • Sweave 缓存包

    我正在尝试编写一份报告 我的问题是每次我编译 R 时都会加载我在报告中使用的包 如 ggplot2 MASS cubature 这是非常耗时的 有没有办法查包裹 I found 缓存编织但它不起作用 这是我在 sweave 文件中添加的块
  • 插值时间序列

    我有两组具有不同时间戳的数据 一组数据包含校准数据 另一组包含样本数据 校准的频率比样品少得多 我想做的是将校准数据 低频 插值到采样时间序列 高频 上 sam lt textConnection time value 01 00 52 2
  • 对 R/Sweave 进行编程以获得正确的 \Sexpr 输出

    我在为 Sweave 进行 R 编程时遇到了一些问题 rstats twitter 小组经常指出这里 所以我想我应该把这个问题向大家提出 我是一名分析师 而不是程序员 所以在我的第一篇文章中请放轻松 问题是 我正在使用 R 在 Sweave
  • 是否可以在 R 中创建自定义 pch 形状?

    R 中的许多绘图函数都使用图形参数pch指定数据点的形状 根据R 文档 https www rdocumentation org packages graphics versions 3 6 2 topics points 有 26 个矢量
  • 如何将变量传递给 ddply 中的自定义函数?

    考虑以下数据 d data frame experiment as factor c foo foo foo bar bar si runif 5 ti runif 5 我想进行相关性测试si and ti 对于每个experiment因素
  • 在 R 中高效加载稀疏矩阵

    我在将数据有效加载到 R 中的稀疏矩阵格式时遇到问题 这是我当前策略的 不完整 示例 library Matrix a1 Matrix 0 5000 100000 sparse T for i in 1 5000 a1 i idxOfCol
  • 生成与现有变量具有预定义相关性的二进制变量

    对于模拟研究 我想生成一组随机变量 连续变量和二元变量 这些变量与已经存在的变量具有预定义的关联binary变量 此处表示为x 对于这篇文章 假设x是按照下面的代码生成的 但请记住 在现实生活中 x是一个已经存在的变量 set seed 1
  • 动态显示仪表板页面

    我有一个实用的闪亮应用程序 它使用shinydashboard包裹 新功能需要特定于用户的行为 例如 针对不同的用户名使用不同的数据集 因此我打算 显示登录表单 验证凭据并设置反应值LoggedIn to true如果成功的话 显示实际情况

随机推荐

  • 使用 PHP eval 的风险[重复]

    这个问题在这里已经有答案了 可能的重复 什么时候 如果有的话 eval 不是邪恶的 https stackoverflow com questions 3499672 when if ever is eval not evil php 中的
  • 两个互相引用的类

    我是 C 新手 所以这个问题可能很基本 我有两个类需要互相引用 每个都在自己的头文件中 include 是另一个的头文件 当我尝试编译时 我收到其中一个类的错误 ISO C 禁止声明没有类型的 Foo 如果我切换事物 以便首先解析相反的标头
  • BottomNavigationView.setupWithNavController 不起作用

    目前我正在开发一个Android应用程序 我想在其中同时利用Android Navigation Component and BottomNavigationView 在开发上述应用程序时 我签出了官方代码实验室这里有几个问题 但事实证明它
  • Firebase Web:下载 URL 中的存储位置

    我正在编写一个需要存储位置的 firebase 函数 现在我有下载网址 有没有办法像这样获取存储位置 gs dexxxxxxxxxxxxxxxx com videosvideo 67423 http gs dekhoapp appspot
  • 如何存储 JWT 并使用 React 将它们与每个请求一起发送

    很高兴知道 因为我的基本注册 身份验证系统正在运行 所以基本上我得到了这个 app post login function req res Users findOne email req body email function err us
  • 使用 CL 寄存器进行移位会导致部分寄存器停顿吗?

    变量移位是否会产生部分寄存器停顿 或寄存器重组微指令 ecx 如果是 在哪种微架构上 我已经在Core2 65nm 上测试过这个 它似乎是只读的cl shiftbench push rbx mov edx 10000000 mov ecx
  • 在 x64 上,每个 PUSH 指令是否推送 8 字节的倍数?

    在 x64 上 每个 PUSH 指令是否压入 8 字节的倍数 如果没有的话 推力有多大 另外 每个函数参数消耗多少堆栈空间 64 位模式下的 PUSH 操作数大小 压入堆栈的值的大小以及堆栈指针调整的量取决于 PUSH 指令的操作数大小 在
  • 创建多个小文件的性能

    我需要一个测试应用程序 它将尽可能快地在磁盘上创建大量小文件 异步操作是否有助于创建文件或只是写入文件 有没有办法加快整个过程 不可能在单个文件上写入 物理驱动器 IO 不会成为这里的瓶颈吗 如果写入 4200rpm 驱动器 10 000r
  • 将两个分支之间的差异合并到第三个分支

    假设我有两个分支 master and new feature 我应该致力于一个特定的功能 我认为这个功能将成为new feature所以 我检查了specific feature分支出new feature分支 像这样 git check
  • 如何使用 eval(UrlFetchApp.fetch()) 在我的 google apps 脚本中加载外部 javascript?

    我正在尝试使用以下代码从 Google Apps 脚本功能 使用 Amazon SES Javascript SDK 发送电子邮件 function sendemail email name code date expiry version
  • Jquery:悬停时扩展选择选项

    如何使用 jquery 展开 打开鼠标悬停时的选择选项以显示选择列表中的所有项目
  • 如何将远程图像复制到我的网站目录?

    我从其他网站发布图片 我宁愿将它们放在我的服务器上 以防他们的服务器突然死机 假设该文件位于 www www www image gif 我如何将其安全地复制到我的目录 images 我用 PHP 编写 Thanks 以下应该有效 requ
  • 如何使用 flutter_webview 插件在 Flutter 中启用位置?

    我目前正在一个项目中使用 flutter webview 插件 在其中一个页面中 我需要获取用户位置信息来计算距离 网页上运行 JavaScript 来获取位置 这是我的示例代码 WebView key key initialUrl htt
  • TFJS-Node:如何从 url 加载模型?

    我想从节点中的 url 加载模型 这在浏览器中有效 mobileNet await tf loadModel https storage googleapis com tfjs models tfjs mobilenet v1 0 25 2
  • 从大文件中检索版本信息

    我们有大型可执行文件 gt 1 2 GB 其中包含自定义版本信息 我尝试使用 FileVersionInfo 类的 GetVersionInfo 从这些文件中检索 版本信息 由于某种原因 此方法不会返回 Windows XP 中较大文件 已
  • 为什么要使用页面工厂?

    我是一名新的测试工程师 一直在阅读有关页面对象模型的内容并实现它们 并不断遇到页面工厂 据我所知 Page Factory 是一个 POM 它提供了额外的功能 例如在调用 Page Factory 时实例化所有元素以及用于测试的更可读代码
  • 我应该何时/在哪里检查最低 Python 版本?

    这个问题 https stackoverflow com questions 1093322 how do i check what version of python is running my script告诉我how检查Python的
  • 从同一本地网络上的计算机访问虚拟主机

    我正在尝试进行设置 以便可以从计算机 B 访问计算机 A 中的虚拟主机上的网站 A 和 B 都位于同一网络上 我在 Win 7 上使用 xampp 因此 问题是计算机 A 服务器 在 httpd vhosts conf 文件中具有如下虚拟主
  • 如何删除与数组任何元素匹配的子字符串

    I have str this is the string 我有一个字符串数组 array this is second element third element 我想处理该字符串 以便删除与数组的任何元素匹配的子字符串 并返回字符串的其
  • 为什么 sapply() 返回一个列表?

    我遇到了一个奇怪的行为R http en wikipedia org wiki R 28programming language 29与sapply 功能 该函数应该返回一个向量 但在给它一个空向量的特殊情况下 它会返回一个列表 向量的正确