gpt4 book ai didi

r - 计算 data.table 中多个列表的长度

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

我想计算 data.table 中列表的每个元素的长度。这是一个小例子。

test<-data.table(
x = list(c(1,2,3),c(1)),
y = list(c(2,3),c(1,2,3))
)

#This works:
test[,length_x:=sapply(x,length)]
test[,length_y:=sapply(y,length)]

#But this does not, can somebody explain why and how to correct it:
test[,c("length_x","length_y"):=sapply(.SD,length)]

有人可以解释为什么代码的第二部分不起作用以及如何更正它。

最佳答案

这里的问题是您实际上需要两个级别的迭代

  • 使用 lapply(.SD, ...) 对列进行迭代
  • 迭代列元素以评估“单元格”长度
test[, c("length_x", "length_y") := lapply(.SD, function(column) {
sapply(column, length)
})]

这可以使用 lapply 中的省略号 (...) 进一步简化。

test[, c("length_x", "length_y") := lapply(.SD, sapply, length)]

关于r - 计算 data.table 中多个列表的长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68500376/

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