gpt4 book ai didi

r - 在 ifelse R data.table 中使用 apply

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

我有以下 data.table 对象:

USER    active  rate   day    # of elements by hour
4q7C0o 1 1.48 1 c(0, 0, 0, 0, 0, 0, 5, 98, 167, 211, 246)
2BrKY63 1 0.5 3 c(0, 0, 0, 0, 0, 0, 0, 5, 15, 24, 89, 187)
3drUy6I 1 2.58 5 c(0, 0, 0, 0, 0, 0, 0, 0, 1, 112, 265, 309)
G5ALtO 1 1.1 7 c(0, 0, 0, 0, 0, 0, 0, 2, 20, 153, 170)

# of elements by hour 列的每个元素都是一个长度不同的列表。我想将函数 pexp() 应用于每个列表的每个元素(例如 pexp(0, rate = 1.48) 到第一个列表的第一个元素和 pexp(246, rate = 1.48) ) 到第一个列表的最后一个元素),如果出现小于 'x' 的值,则将其显示在新列中。类似的东西:

DT[, ifelse(any(lapply( of elements by hour, pexp, rate = rate) < x), 'no.usable','usable' )  ,]

但是我不知道如何在 data.table 中快速完成。

最佳答案

pexp 是指数密度,它是单调且容易可逆的。如果满足以下条件,则您的条件满足速率 l:

# elem > 1 / rate * log(rate / x)

因此我们只需要查看每个列表的最大个数并检查那里的条件。

考虑到这一点,我们可以这样做:

DT[ , fifelse(sapply(`# elem`, max) > 1/rate*log(rate/x), 'no.usable', 'usable')]

关于r - 在 ifelse R data.table 中使用 apply,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59547686/

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