当未找到搜索词时,在 R 中使用 -which() 会出现意外行为

2023-12-11

我一直用Rwhich函数从数据框中删除行。我最近发现,如果搜索词不在 data.frame 中,则结果是空字符。

# 1: returns A-Q, S-Z (as expected)
LETTERS[-which(LETTERS == "R")]
# 2: returns "character(0)" (not what I would expect)
LETTERS[-which(LETTERS == "1")]
# 3: returns A-Z (expected)
LETTERS[which(LETTERS != "1")]
# 4: returns A-Q, S-Z (expected)
LETTERS[which(LETTERS != "R")]

第二个例子是预期的行为吗-which()当找不到搜索词时?我已经将代码切换为使用示例 4 中的语法,这看起来更安全,但我只是好奇。


这是一个众所周知的陷阱。当没有任何内容与逻辑测试匹配时,哪个函数返回 numeric(0),然后“[”不返回任何内容,而不是返回预期的所有内容。您可以使用:

 LETTERS[ ! LETTERS == "1" ]
 LETTERS[ ! LETTERS %in% "1" ]

还有另一个需要注意的问题,也是让我选择使用 which() 的问题。当使用逻辑索引时,“[”内使用的 NA 值将返回一行。我通常不希望这样,所以我使用DFRM[ which(logical) ]尽管这似乎让一些人感到困扰,他们说没有必要。我只是认为他们正在处理小型数据集,并且很少会遇到在控制台上看到数以万计的 NA 引起的无用输出行的烦恼。我never但使用否定的哪个版本。

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

当未找到搜索词时,在 R 中使用 -which() 会出现意外行为 的相关文章

  • 从拟合的 lm 或 glm [R] 获取每个因子水平(以及交互作用)的数据数量

    我在 R 中有一个逻辑回归模型 其中所有预测变量都是分类变量而不是连续变量 除了响应变量 它显然也是分类 二元变量 打电话时summary model name 有没有办法在每个因子水平中包含一个表示观测值数量的列 我在 R 中有一个逻辑回
  • 在并行包中的 R 的 par*apply 函数内部使用 Rcpp 函数

    我试图了解背后发生的事情Rcpp sourceCpp 调用并行环境 最近 问题中部分解决了这个问题 在 Windows 上使用 parLapply 中的 Rcpp 函数 https stackoverflow com questions 2
  • 设置设备默认图形参数

    我经常喜欢在 IDE 中使用浅色文本和深色背景颜色主题 当我在 R 中绘制某些内容时 绘图的默认颜色方案是白色背景上的黑色文本 边框 点 我试图默认更改此设置 最好是默认从 R 调用的特定设备 X11cairo RStudioGD 同时保留
  • ggplot:如何检索轴标签的值?

    如何提取下面的 ggplot 中用于标记 y 轴和 x 轴的数字 分别为20 30 40 and 10 15 20 25 30 35 Plot From r 统计公司 http r statistics co Top50 Ggplot2 V
  • R 单个变量中的多重图

    嗨 我有下一个代码 par mfrow c 1 3 plot BCxyz 1 BCxyz 2 main Bray Curtis 1 2 pch 20 cex 3 col c blue green red yellow Metadata Sa
  • 非等值连接 - 比较 R 中的两个数据帧

    我想根据第二个数据框中存在的值过滤数据框 例如 匹配第一个数据帧中 BP 列中高于 start pos 列的第一个值且小于 end pos 列或仅小于第二个数据中的 end pos 的行框架 我需要对第二个数据框中的所有值重复此过程 目前
  • 一起使用 R6 类和 foreach() %dopar% 的问题

    当与 foreach 一起使用时 我在 R6 类上遇到问题 可能与环境有关 我使用的是 Windows 假设有两个 R6 类 class1 和 class2 class1 中的 method1 依赖于 class2 例如 请参见下面的示例代
  • R grep:有 AND 运算符吗?

    假设我有以下数据框 User Id Tags 34234 imageUploaded people jpg more comma separated stuff 34234 imageUploaded 12345 people jpg 我如
  • 查询文本指定 use_legacy_sql:false,而 API 选项指定:true

    我将 standardSQL 与 bigrquery 一起使用 library bigrquery project lt sql lt standardSQL SELECT result lt query exec sql project
  • 如何与 R 包 sf 进行“完整”联合

    我尝试使用三个多边形之间的并集sf st union 下图中显示了 ArcGIS Overlay Union All 的结果 我希望通过使用 R 中的 sf 包获得与 OUTPUT 中五个不同多边形类似的结果 library sf a1 l
  • tm 包本身是否提供了组合文档术语矩阵的内置方法?

    tm 包本身是否提供了组合文档术语矩阵的内置方法 我在同一语料库上生成了 4 个文档术语矩阵 每个矩阵为 1 2 3 4 克 它们都非常大 200k 10k 因此将它们转换为数据帧然后绑定它们是毫无疑问的 我知道我可以编写一个程序来记录每个
  • 有条件地为 R 中置信带之外的数据点着色

    我需要对下图中置信带之外的数据点与带内的数据点进行不同的着色 我是否应该在数据集中添加一个单独的列来记录数据点是否在置信区间内 您能举个例子吗 示例数据集 Dataset from http www apsnet org education
  • 保存 d3heatmap 生成的热图

    我正在尝试保存由d3heatmap https github com rstudio d3heatmap转换为 pdf 文件 但文件总是损坏 library d3heatmap pdf file heat pdf d3heatmap mtc
  • 从 R 文本中提取网站链接

    我有多个文本 每个文本都可能包含对一个或多个网络链接的引用 例如 text1 s 1212a as www abcd com asasa11 我如何提取 www abcd com 来自 R 中的这段文字 换句话说 我希望提取以www并结束于
  • 根据 B 列中的一系列值获取 A 列的平均值

    我的数据框有几列 如下所示 df1 lt data frame A c 1 2 4 B c 1 3 1 C c 1 1 3 我有两个条件来获取 A 列的平均值 条件1 我想在B为1时获得A列的平均值 即只对row1和row2进行平均 条件2
  • 在 R/exams exams2nops() 中用零填充初始学生 ID

    当使用exams为 NOPS 考试生成 PDF 文件的软件包我想编辑学生可用的位数 reglength 我知道该软件包只允许至少 7 位数字 然而 我们学生的身份证号码只有5位数字 因此我想知道是否可以通过 PDF 操作来编辑模板 我尝试过
  • 将缺失的行添加到数据表中

    我有一个数据表 library data table f lt data table id1 c 1 2 3 1 2 3 id2 as factor c a a b c b d v 1 6 key c id1 id2 id1 id2 v 1
  • 如何使用键盘命令中断 R 中正在运行的代码?

    如何中断 R 中正在运行的脚本 假设我遇到无限循环或其他问题 并且我想停止脚本运行 有键盘命令可以做到这一点吗 如果有帮助的话 在 Python 中是 Ctrl c 我在R中尝试过 但没有成功 自我回答 几乎是其他人的评论和答案的总结 In
  • 通过另一个函数将数据和列名称传递给 ggplot

    我将直接跳到一个示例并在后进行评论 cont lt data frame value c 1 20 variable c 1 20 1 20 1 5 1 20 2 group rep c 1 2 3 each 20 value variab
  • 使用“kde”函数进行 R 中的 5-D 核密度估计

    我想通过使用 R 的 ks 库中的 kde 函数来执行 5 维数据 x y z 时间 大小 的核密度估计 在它的手册中 它说它可以执行核密度估计1 至 6 维数据 手册第 24 页 http cran r project org web p

随机推荐