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

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")

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

IDABmin_Amax_Amin_Bmax_B
150.2, 0.3550.20.3
20.5, 0.660.50.666
320.1, 0.1220.10.1

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

r

推荐答案

使用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 Markdown 无法在同一个 if 语句中显示两个图

更改向量中元素 1:2 的位置

无需列出向量即可在向量列表上应用均值的函数(对函数调用的更改)

用“;”分隔变量并创建新行

如何找到一个列中的值与多个列中的值的最小差异

数据表:为每一行从其他表生成随机值

过滤组内的行

R 当前时间(以毫秒为单位)

R过滤多次出现但不包含特定字符串的数据

通过(非统一)名称连接两个数据集

如何将函数应用于R中的每一行数据框?

计算低于 30% 百分位的记录

错误:C 堆栈使用量太接近 R 启动时的限制

创建一个新变量,仅当 R 中满足条件时才打印一系列列中的第一个值

openxlsx中的addStyle函数不会用正确的 colored颜色 填充excelElectron 表格中的单元格

如何重复计算两行之间的百分比?

我们如何返回 R 中两个字符串中常见字符的数量?

r 用列表中的 n 个参数连续过滤

在 ggplot 中使分组面的大小相同,占每组的面数