gpt4 book ai didi

r - 如何通过 data.table 中的一列列表键入

转载 作者:行者123 更新时间:2023-12-04 17:26:37 26 4
gpt4 key购买 nike

this post 之后,我有另一个关于 data.table 列表列的问题。

DT = data.table(x=list(c(1,2),c(1,2),c(3,4,5)))

似乎您无法键入一列列表。
DT[,y:=.I,by=x]
Erreur dans `[.data.table`(DT, , `:=`(y, .I), by = x) :
The items in the 'by' or 'keyby' list are length (2,2,3). Each must be same length as rows in x or number of rows returned by i (3).

我以为我可以使用相同长度的列表,但是:
DT = data.table(x=list(c(1,2),c(1,2),c(3,5)))
DT[,y:=.I,by=x]
Erreur dans `[.data.table`(DT, , `:=`(y, .I), by = x) :
The items in the 'by' or 'keyby' list are length (2,2,2). Each must be same length as rows in x or number of rows returned by i (3).

有解决方法吗?如果不是,那么功能请求呢?

最佳答案

我会做这样的事情作为一种解决方法:

DT[, y := which(DT$x %in% x), by = 1:nrow(DT)]

这将始终返回第一个匹配的索引,它将用作组 ID。

你应该做这样的事情:
DT[, psnInGrp := seq_along(x), by=y]

# x y psnInGrp
# 1: 1,2 1 1
# 2: 1,2 1 2
# 3: 3,4,5 3 1

关于r - 如何通过 data.table 中的一列列表键入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14896088/

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