R across 只找到正值或只找到负值 tidyverse

2024-03-25

在dplyr中逐列运算 https://dplyr.tidyverse.org/articles/colwise.html有这个例子:

df <- tibble(x = c("a", "b"), y = c(1, 1), z = c(-1, 1))
# Find all rows where EVERY numeric variable is greater than zero
df %>% filter(across(where(is.numeric), ~ .x > 0))
#> # A tibble: 1 x 3
#>   x         y     z
#>   <chr> <dbl> <dbl>
#> 1 b         1     1

如果我们稍微改变一下小标题:

df <- tibble(x = c("a", "b", "c"), y = c(1, 1, -1), z = c(-1, 1, -1))

我们想要获得两列的负值或正值,我们需要命名这些列:

df %>% filter((y > 0 & z > 0) | (y < 0 & z < 0))
#> # A tibble: 2 x 3
#>  x         y     z
#>  <chr> <dbl> <dbl>
#> 1 b         1     1
#> 2 c        -1    -1

with across()如何才能做到这一点?

df %>% filter(across(where(is.numeric), ~ .x > 0 | .x < 0))
#> # A tibble: 3 x 3
#>  x         y     z
#>  <chr> <dbl> <dbl>
#> 1 a         1    -1
#> 2 b         1     1
#> 3 c        -1    -1

我们必须检查所有TRUE or all FALSE来自一组条件,例如c(T, T), c(T, F) and c(F, F). Now -

  • if_all会过滤c(T, T)
  • !if_any会再次过滤c(T, T) from !即剩余值的否定
  • 这两个将由一个连接起来| i.e. OR
  • 这样,我们就只有c(T, T) & c(F, F)

因此,这将做

df %>% filter(if_all(where(is.numeric), ~ .x > 0) | !if_any(where(is.numeric), ~ .x < 0))

# A tibble: 2 x 3
  x         y     z
  <chr> <dbl> <dbl>
1 b         1     1
2 c        -1    -1

选择

df %>% filter(if_all(where(is.numeric), ~ .x > 0) | across(where(is.numeric), ~ .x < 0))

# A tibble: 2 x 3
  x         y     z
  <chr> <dbl> <dbl>
1 b         1     1
2 c        -1    -1

让我们看一下更大的例子

set.seed(201)
df <- data.frame(A = LETTERS[1:10], x = rnorm(10), y = rnorm(10), z = -1*rnorm(10))

> df
   A           x           y           z
1  A  0.28606069  0.69329617  0.24400084
2  B -0.34454603  0.22380936  0.98825314
3  C  0.32576373  0.39845694 -1.24206048
4  D -1.69658097  1.01347438  1.68266603
5  E -1.28548252 -0.64785307 -1.44289063
6  F -0.07503189  0.64845271  0.46543975
7  G  0.26693735  0.20734270 -0.69366150
8  H  0.05593404  0.06439014  0.08772557
9  I -2.30403431  0.66938092  0.95508038
10 J  0.18900414 -0.37425445 -0.17010088

> df %>% filter(if_all(where(is.numeric), ~ .x > 0) | !if_any(where(is.numeric), ~ .x < 0))
  A           x           y           z
1 A  0.28606069  0.69329617  0.24400084
2 E -1.28548252 -0.64785307 -1.44289063
3 H  0.05593404  0.06439014  0.08772557
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

R across 只找到正值或只找到负值 tidyverse 的相关文章

  • R markdown PDF:为测验者暂时隐藏剧透代码

    我正在使用 R markdown 创建 PDF R 课程 我想插入一个如下所示的测验 output pdf document What is the class of the following R object 1 pi r class
  • 用plotly创建丝带

    我需要在散点图上绘制加速度与英里 加仑的两个斜率 轻型汽车一处斜坡 重型汽车一处斜坡 我创建了这个 cars light lt cars log cars log log weight lt log mean cars weight car
  • R 中的线性模型 - 乘法表达式

    我有 3 个数值变量A B and C 我正在尝试创建一个能够预测的线性模型A 我使用的表达式是B C为了预测A 然而 当查看输出时 我无法得到我的方程 因为我得到了额外的变量 但我不知道它是什么 这是我的代码 MyData lt read
  • ggplot2:图例下方的中心图例而不是面板区域

    ggplot默认情况下 图例位于面板下方居中 这在某些情况下确实令人沮丧 请看下面的例子 ggplot diamonds aes cut fill clarity geom bar coord flip theme legend posit
  • 如何更新 R 中的包?

    我想将一个 R 包升级到已经可用的新版本 我试过 update packages c R2jags 但它什么也没做 控制台上没有输出 没有错误 什么也没有 我使用了相同的语法install packages但也许我做错了什么 我一直在看 u
  • 在 Travis 上使用 devtools 安装 R 包时遇到问题

    Travis CI 构建于drakeR包手册 https github com ropenscilabs drake manual 最近开始失败 https travis ci org ropenscilabs drake manual b
  • “未找到 JAVA 路径。请检查 JAVA 是否已安装。”初始化 RSelenium 时出错

    我正在尝试启动一个 RSelenium 会话到 webscrape 但是 当运行此代码时 driver lt rsDriver browser c chrome chromever 76 0 3809 126 port 4444L 我收到此
  • dplyr +“meta”-columns:当列包含要使用的其他列的名称而不是数据时

    我想知道以下问题在 dplyr 中是否有一个优雅的解决方案 要提供一个简单的可重现示例 请考虑以下 data frame df lt data frame a 1 5 b 2 6 c 3 7 ref c a a b b c stringsA
  • 如何在 R 中“推断”面板数据的值?

    我有一个带有 NA 值的面板数据 如下所示 uid year month day value 1 1 2016 8 1 NA 2 1 2016 8 2 NA 3 1 2016 8 3 30 4 1 2016 8 4 NA 5 1 2016
  • 为什么在 data.frame 中预先指定类型会比较慢?

    我预先分配了一个大 data frame 以便稍后填写 我通常这样做NA是这样的 n lt 1e6 a lt data frame c1 1 n c2 NA c3 NA 我想知道如果我预先指定数据类型是否会让事情变得更快 所以我测试了 f1
  • 从每小时中提取/子集分钟值

    我的数据框包含以下格式的日期值YYYY MM DD HH MM SS跨越 125000 多行 按分钟细分 每行代表一分钟 1 2018 01 01 00 04 00 2 2018 01 01 00 05 00 3 2018 01 01 00
  • r:按多列分组并计数

    我有以下数据框 df LeftOrRight SpeedCategory NumThruLanes R 25to45 3 L 45to62 2 R Gt62 1 我想按速度类别对其进行分组 并循环遍历其他列以获取每个速度类别中每个唯一代码的
  • 在 R 中安全地计算算术表达式?

    Edit 好吧 由于似乎有很多混乱 我将稍微简化一下问题 您可以尝试回答下面的原始问题 或者您可以解决此版本并忽略该行下面的所有内容 我的目标是采用任意表达式并在极其受限的环境中对其进行评估 该环境将仅包含具有以下类型值的变量 数值向量 接
  • 配置 fix() 和 edit() 以从 R/RStudio 在 Notepad++ 中打开

    当我在 RStudio 或 RGUI 中执行此操作时 fix SomeFunction 或使用edit 我可以在记事本中看到该函数的代码 有什么方法可以更改此设置 以便代码预览在 Notepad 中打开 而不是在普通的旧记事本中打开 同样
  • data.table 的包装函数

    我有一个已经使用 data frame 上下文编写的项目 为了缩短计算时间 我尝试利用 data table 的速度 我的方法是构造包装函数 读取帧 将它们转换为表 进行计算 然后转换回帧 这是一个简单的例子 FastAgg lt func
  • R - 通过合并和超过 2 个后缀进行减少(或者:如何合并多个数据帧并跟踪列)

    我正在尝试基于 2 列合并 4 个数据帧 但要跟踪列源自哪个数据帧 我在跟踪列时遇到问题 参见 dput dfs 帖子末尾 df example df1 Name Color Freq banana yellow 3 apple red 1
  • 在防风草模型上使用 VIP 包计算重要性度量

    我正在尝试使用 vi firm 在防风草中制作的逻辑回归模型上计算特征重要性 对于正则表达式 我将使用 iris 数据集并尝试预测观察结果是否为 setosa iris1 lt iris gt mutate class case when
  • R:(中缀)运算符的两个定义之间的冲突:如何指定包?

    在 R 中 每当两个包定义相同的函数时 很容易指定要使用哪个包pkg foo 但是 当冲突的功能是一个时 你该怎么办 infix运算符 即使用定义 举个例子 两者ggplot2 and crayon define 有没有一种方法可以让我默认
  • XLConnect 无法确定 JAVA_HOME 错误

    感谢您的帮助 我正在尝试运行 XLconnect 但收到此错误消息 gt library XLConnect lib loc C Users 1144143929 Documents R win library 2 15 Error onL
  • 使用神经网络包进行多项分类

    这个问题应该很简单 但文档没有帮助 我正在使用 R 我必须使用neuralnet多项式分类问题的包 所有示例均针对二项式或线性输出 我可以使用二项式输出进行一些一对一的实现 但我相信我应该能够通过使用 3 个单元作为输出层来做到这一点 其中

随机推荐