r - 类型列表时按列的最大值排序?
问题描述
我有以下df。
d<- data.frame (type=c("rna","rna","rna"), value = c(1,2,3) )
d2 <- data.frame (type=c("dna","dna"), value = c(20,30) )
d3 <- data.frame (type=c("protein","protein","protein"), value = c(-9.6,300, 1000) )
df <- rbind (d,d2,d3)
df$test = list ( c(0,12), 2, 3, 4,5,6,7, c(20,1) )
type value test
1 rna 1.0 0, 12
2 rna 2.0 2
3 rna 3.0 3
4 dna 20.0 4
5 dna 30.0 5
6 protein -9.6 6
7 protein 300.0 7
8 protein 1000.0 20, 1
我喜欢做的是将列测试从最高到最低排序。但是因为 test 是一个列表,所以我喜欢做的只是使用最大值。例如,第 1 行将使用值 12 和第 8 行按 20 排序。因此,如果我按第 8 行降序排列测试,则第 8 行将是第一行,然后是第 2 行,依此类推。当列是数字类型时,我可以排序,但当它是列表时,我可以排序,尤其是当每个元素中有多个值时。谢谢。
解决方案
您可以使用sapply(..., max)
从每个向量中提取最大值,然后按其排序:
df %>% arrange(desc(sapply(test, max)))
# type value test
#1 protein 1000.0 20, 1
#2 rna 1.0 0, 12
#3 protein 300.0 7
#4 protein -9.6 6
#5 dna 30.0 5
#6 dna 20.0 4
#7 rna 3.0 3
#8 rna 2.0 2
推荐阅读
- kotlin - 对多个变量进行空检查
- javascript - 为cardnum传递的不同值在ajax中以0开头
- javascript - JavaScript 代码导致 API 响应输出两次
- if-statement - 如果为 false,则在 tickscript 中不执行任何操作
- wiremock - Spring Cloud Contract消费者端测试返回404
- entity-framework - EF Core 第二个对象引用生成循环依赖
- webpack - 如何使用 webpack5 的 'asset/resource' 和 `ImageMinimizerPlugin` 镜像源目录的文件结构?
- sql-server - 尝试使用参数和多个连接创建存储过程
- mongodb - MongoDB - 来自两个集合的猫鼬数据
- python - 如何在 discord.py 中制作 akinator 命令?