Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在ifelse R data.table中使用apply_R_List_Function_Data.table - Fatal编程技术网

在ifelse R data.table中使用apply

在ifelse R data.table中使用apply,r,list,function,data.table,R,List,Function,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,

我有以下
数据。表
对象:

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)

其中,按小时排列的元素列
#中的每个元素都是长度不同的列表。我想将函数
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' )  ,]
DT[,ifelse(任何(lappy(按小时计算的元素,pexp,速率=速率)

然而,我不知道如何在
数据中短时间内做到这一点。table

这里有一个带有
Map
的选项,我们在
的每个元素上应用
pexp
“按小时计算的元素数”
以及相应的“rate”列值

DT[, c('usable', 'no.usable')[unlist(Map(function(x, y)
     any(pexp(x, rate = y) < x))   `# of elements by hour`, rate)) + 1]]

pexp
是指数密度,它是单调且容易可逆的。您的条件满足费率l,前提是:

# elem > 1 / rate * log(rate / x)
因此,我们只需要查看每个列表的最大数量,并检查其中的条件

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

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

非常感谢@AkrunThank@MichaekChirico!
DT[ , fifelse(sapply(`# elem`, max) > 1/rate*log(rate/x), 'no.usable', 'usable')]