gpt4 book ai didi

r - dplyr 的最大数字列数

转载 作者:行者123 更新时间:2023-12-03 09:05:44 25 4
gpt4 key购买 nike

假设,我有一个数据框 df,其中包含一些文本和一些数字列

species            | short | A    | B    | C 
-------------------+-------+------+------+-----
Homo sapiens | hsa | 0.1 | 0.2 | 0.7
Mus musculus | mmu | 0.3 | 0.7 | 0.0
Rattus norvegicus | rno | 0.0 | 1.0 | 0.0

我知道我可以使用 dplyr 添加一列来计算所有列的最大值,但这仅在所有列均为数字时才有效:

df %>%
rowwise() %>%
mutate(max_score = max(.))

如何实现相同的效果,忽略所有非数字列?

(显然,我可以手动命名 A, B, C,但假设我有一个包含许多列的“胖”数据框。)

最佳答案

您可以将 select_ifis.numeric 一起使用来选择数字列,并使用 do.call(pmax, ...) 来选择计算行最大值; pmax 返回输入向量的并行最大值,因为它以向量作为单独的参数,我们可以使用 do.call 传递 select_if 的所有列的返回值(数据框)作为 pmax 的参数:

df %>% mutate(max_score = do.call(pmax, select_if(., is.numeric)))

# species short A B C max_score
#1 Homo sapiens hsa 0.1 0.2 0.7 0.7
#2 Mus musculus mmu 0.3 0.7 0.0 0.7
#3 Rattus norvegicus rno 0.0 1.0 0.0 1.0

关于r - dplyr 的最大数字列数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47640205/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com