Gil*_*les 15 r data.table
难以表达我的问题(因此难以在档案中有效搜索......).下面的代码应该清楚.
为什么在第二个命令中输出的最后一个列名不是"nb_ob"?c(lapply(.SD, mean), nb_obs = .N)
应该提供一个带有4个元素的命名列表,这些元素应该成为最终结果中的一列.
奇怪c(lapply(.SD[,1:4], mean), nb_obs = .N)
(第三个命令)提供了预期的结果.如果我删除by
参数(最后一个命令),我也会获得预期的列名(带有字符列"Species"的警告).
对于Ubuntu 16.04.3 LTS,使用data.table_1.10.4,R版本3.4.1运行代码(如果需要,我可以提供更多)
iris <- data.table(iris)
iris[, c(lapply(.SD, mean), nb_obs = .N), by = Species] # 2nd command
# Species Sepal.Length Sepal.Width Petal.Length Petal.Width N
# 1: setosa 5.006 3.428 1.462 0.246 50
# 2: versicolor 5.936 2.770 4.260 1.326 50
# 3: virginica 6.588 2.974 5.552 2.026 50
iris[, c(lapply(.SD[,1:4], mean), nb_obs = .N), by = Species] # 3rd command
# Species Sepal.Length Sepal.Width Petal.Length Petal.Width nb_obs
# 1: setosa 5.006 3.428 1.462 0.246 50
# 2: versicolor 5.936 2.770 4.260 1.326 50
# 3: virginica 6.588 2.974 5.552 2.026 50
iris[, c(lapply(.SD, mean), nb_obs = .N)] # Fourth command
# Sepal.Length Sepal.Width Petal.Length Petal.Width Species nb_obs
# 1: 5.843333 3.057333 3.758 1.199333 NA 150
Run Code Online (Sandbox Code Playgroud)
data.table
这是基于这个问题提出的项目积压中的一个问题:
这个答案是基于@Frank 上面的评论。