gpt4 book ai didi

r - 如何在data.table的每一行中应用函数

转载 作者:行者123 更新时间:2023-12-04 09:32:23 27 4
gpt4 key购买 nike

假设我有以下内容

dt <- data.table(a=c(T,T,F,F), b= c(T,F,T,F))

返回,
       a     b
1: TRUE TRUE
2: TRUE FALSE
3: FALSE TRUE
4: FALSE FALSE

我曾尝试使用 function(x) min(which(x))确定第一个 TRUE dt 中的每一行,但它没有用。我期望的结果将是
       a     b index
1: TRUE TRUE 1
2: TRUE FALSE 1
3: FALSE TRUE 2
4: FALSE FALSE 9999

,其中索引列表示第一个 TRUE 的位置当该行仅包含 FALSE 时使用 9999

仅供引用:在真实数据中,我有大约 50 列包含 TRUE 和 FALSE

你能给我建议吗?

最佳答案

对于 50 列,最好使用 max.col

dt$index <- max.col(dt, 'first') *(!!rowSums(dt))

或者正如@David Arenburg 所提到的,更惯用的代码是
dt[, indx := max.col(.SD,ties.method="first")*(!!rowSums(.SD))]

如果我们需要 9999
 (max.col(dt)*(!!rowSums(dt))) + (!rowSums(dt))*9999

关于r - 如何在data.table的每一行中应用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33210505/

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