我有一个包含三列的数据框,其中两列可以包含数值或列表.我想添加其他列,其中包含这两列中每列的最小/最大值.例如,我的数据框可能看起来像;

df <- structure(list(ID = c(1L, 2L, 3L), A = structure(list(
    5, c(0.5, 0.6), 2), names = c("", "", "")), B = structure(list(
    c(0.2, 0.3), 6, c(0.1, 0.1)), names = c("", "", ""))), row.names = c(NA, 
3L), class = "data.frame")

我想对其进行修改以添加列;

ID A B min_A max_A min_B max_B
1 5 0.2, 0.3 5 5 0.2 0.3
2 0.5, 0.6 6 0.5 0.6 6 6
3 2 0.1, 0.1 2 2 0.1 0.1

我try 了mutate(min_A = min(unlist(A))),但这似乎是entire column of A的最小值,而不仅仅是任何给定行上的列表.mutate(min_A = min(A))错误,因为list是min命令的无效参数类型.那么,我该如何添加我要查找的数据呢?

推荐答案

使用mapacross

library(purrr)
library(dplyr)
df %>% 
 mutate(across(A:B,  ~map_dbl(.x, min), .names = 'min_{.col}'),
       across(A:B, ~ map_dbl(.x, max), .names = 'max_{.col}'))

-输出

 ID        A        B min_A min_B max_A max_B
1  1        5 0.2, 0.3   5.0   0.2   5.0   0.3
2  2 0.5, 0.6        6   0.5   6.0   0.6   6.0
3  3        2 0.1, 0.1   2.0   0.1   2.0   0.1

R相关问答推荐

如何根据条件计算时差(天)

使用R中相同值创建分组观测指标

如何从当前行上方找到符合特定条件的最接近值?

gganimate在使用shadow_mark选项时不保留所有过go 的标记

如何在所有绘图中保持条件值的 colored颜色 相同?

如何读取CSV的特定列时,给定标题作为向量

如何删除仅在数据集顶部和底部包含零的行

为什么在BASE R中绘制线条时会看到线上的点?

来自程序包AFEX和amp;的类/函数和NICE_TABLE&冲突

WRS2包中带有bwtrim的简单ANOVA抛出错误

错误包arrowR:READ_PARQUET/OPEN_DATASET&QOT;无法反序列化SARIFT:TProtocolException:超出大小限制&Quot;

避免在图例中显示VLINS组

整理曲线图、曲线图和点图

如何从嵌套数据中自动创建命名对象?在R中

按镜像列值自定义行顺序

R-找出存在其他变量的各种大小的所有组合

在shiny 表格中输入的文本在第一次后未更新

使用点图调整离散轴比例

对数据帧中的大量组合执行Kruskal-Wallis测试

如何在网页抓取中自动更改页码?