当感兴趣的列是列表(或向量),并且相对于另一列完成选择时,我可能正在尝试学习为数据表创建新列的推荐方法,并且可能会有初步选择作为链的一部分完成。
请考虑将这些数据命名为(tmp)。我们想要找到大于stimTime的sacStartT最小值(在真实数据中,其中一个或另一个可能为空,不存在最小值)。
tmp = data.table("pid" = c(14,14,9,9),"trialNumber" = c(25,26,25,26),"stimTime" = c(100,200,1,2),"sacStartT" = list(c(98,99,101,102), c(201,202), c(5), c(-2,-3,3)))
这有效:
tmp[,"mintime" := as.integer(min(unlist(sacStartT)[unlist(sacStartT)>stimTime])),by=seq_len(nrow(tmp))]
但是如果我想首先子选择数据,我不知道如何获取该行号以进行逐行分析,例如
tmp[pid == 9][,"mintime" := as.integer(min(unlist(sacStartT)[unlist(sacStartT)>stimTime])),by=seq_len(nrow(.N))]
之所以失败,是因为.N
是指tmp中的行数,而不是链中的子集。
总而言之,问题是以下内容的组成: