首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >.SD的行数

.SD的行数
EN

Stack Overflow用户
提问于 2017-04-17 14:04:44
回答 1查看 128关注 0票数 2

如果我有以下简单的数据表:

代码语言:javascript
复制
DT <- data.table(VAL = sample(c(1, 2, 3), 10, replace = TRUE),Group = c(rep("A",5),rep("B",5)))

我可以通过:

代码语言:javascript
复制
DT[,lapply(.SD,function(x){mean(x)}),by=Group]

我也可以利用:

代码语言:javascript
复制
DT[,lapply(.SD,function(x){sum(x)/.N}),by=Group]

但我的问题是,为什么以下几点不起作用:

代码语言:javascript
复制
DT[,lapply(.SD,function(x){sum(x)/nrow(x)}),by=Group]

据我所知,.SD是完整数据表的子数据表,因此通过函数(X),我应该能够引用x的行数--换句话说,为什么我可以计算.SD中的sum(x),而不能计算nrow(x)?在这方面没有在文件中找到任何东西。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-17 14:12:33

.SD是一个data.table,但是当您对它进行lapply时,每个x值都是一个列向量,而nrow对此不起作用。如果要执行length,则返回行数。

代码语言:javascript
复制
DT[,lapply(.SD,function(x){sum(x)/length(x)}),by=Group]
#    Group VAL
# 1:     A 2.0
# 2:     B 1.6
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43453049

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档