当前位置: 首页 > 知识库问答 >
问题:

在R data.table中,取点(.)有什么区别在使用。sd时,j中的“C”?它是如何工作的?

孟栋
2023-03-14
DT <- as.data.table(mtcars) 
DT[ , .(lapply(.SD, sum), .N), by = (cyl) ]

cyl V1 N

1:6 138.2 7

2:6 128 3.2 7

DT[ , c(lapply(.SD, sum), .N), by = (cyl) ]

O/P:

cyl mpg disp hp drat wt qsec vs am gear carb N

6 138.2 1283.2 856 25.10 21.820 125.84 4 3 27 24 7

DT[ , c(sum(mpg), .N), by = (cyl) ]

1:6 138.2

2:6 7.0

3:4 293.3

DT[ , .(sum(mpg), .N), by = (cyl) ]

3:8 211.4 14

为什么会出现这种情况?为什么结果是这样排序的?

共有1个答案

景靖琪
2023-03-14
DT[,    .(sum(mpg), .N), by = (cyl) ] # equal, creates a list with 2 elements (2 columns)
DT[, list(sum(mpg), .N), by = (cyl) ] # equal, to above

DT[,    c(sum(mpg), .N), by = (cyl) ] # creates a vector of length 2 (equal to 2 rows)

另一个简化的例子。

DT[ ,    .(col1 = 1, col2 = 2), by = (cyl) ]
DT[ , list(col1 = 1, col2 = 2), by = (cyl) ]

DT[ , c(element1 = 1, element2 = 2), by = (cyl) ]

为了解决你的最后一点,

DT[ , c(element1 = 1, element2 = 2, element3 = list(3)), by = (cyl) ]
DT[ , c(element1 = 1, element2 = 2, element3 = 3      ), by = (cyl) ]

您需要更多地了解C函数。

DT[ , c(lapply(.SD, sum), .N), by = (cyl) ]
DT[ , c(sapply(.SD, sum), .N), by = (cyl) ] # sapply will simplify the result into a vector, therefore c() will combine into a vector and you end up with many rows.
 类似资料:
  • 问题内容: 我只知道LinkedHashSet插入时不允许重复的元素。但是,我不了解Hashset在Hava中如何工作?我知道哈希表中使用了哈希表,因此哈希表用于存储元素,这里也不允许重复的元素。然后,Treeset也类似于Hashset,它也不允许重复的条目,因此将看到唯一的元素,并且遵循升序。 关于HashMap,我还有一个疑问- Hashmap不维护顺序。它可能具有一个null键和多个nul

  • 本文向大家介绍在redux中,什么是reducer?它有什么作用?相关面试题,主要包含被问及在redux中,什么是reducer?它有什么作用?时的应答技巧和注意事项,需要的朋友参考一下 reducer的作用 : 根据 action 对象的type 来更新状态. reducer的工作方式 : 接收一个 state 参数, 作为初始的 state 接收一个action对象, 在函数体中用 switc

  • 本文向大家介绍什么是#if DEBUG,以及如何在C#中使用它?,包括了什么是#if DEBUG,以及如何在C#中使用它?的使用技巧和注意事项,需要的朋友参考一下 在Visual Studio调试模式和发布模式下,用于构建.Net项目的配置不同。 选择用于逐步调试其.Net项目的“调试”模式,然后为“最终”汇编文件(.dll或.exe)选择“发布”模式。 调试模式不会优化其生成的二进制文件,因为源

  • 为了减少内核或跨进程内存泄漏(Spectre攻击),Linux内核1将使用一个新选项编译,引入到,以便通过所谓的retpoline执行间接调用。 这似乎是一个新发明的术语,因为谷歌搜索只是最近才使用(通常都是在2018年)。 1但是,它不是Linux特有的--类似或相同的构造似乎被用作其他操作系统缓解策略的一部分。

  • 问题内容: 经常出现在Python模块中。即使阅读了Python的文档,我也不明白它的用途以及使用时间/方式。 有人可以举例说明吗? 关于我收到的基本用法的一些答案似乎是正确的。 但是,我需要了解有关工作原理的另一件事: 对我来说,最令人困惑的概念是当前的python版本如何包含未来版本的功能,以及如何使用当前版本的Python成功地编译使用未来版本的功能的程序。 我猜想当前版本包含了将来的潜在功

  • 我想了解这两种说法在更深层次上的区别是什么。 即使我能够从其他类中访问这些变量,并且对我来说两者的工作方式相同,但是< code>get()又有什么不同呢?