gpt4 book ai didi

r - data.table 什么时候保留列名?

转载 作者:行者123 更新时间:2023-12-04 14:38:10 24 4
gpt4 key购买 nike

有些 J 表达式保留列名,有些则不保留:

library(data.table)
d = data.table(hello = 1)
d[, .(hello)]
# hello
# 1: 1
d[, c(.(hello))]
# V1
# 1: 1
d[, {.(hello)}]
# hello
# 1: 1
d[, {1; .(hello)}]
# V1
# 1: 1
d[, .(get("hello"))]
# V1
# 1: 1
d[, mget("hello")]
# hello
# 1: 1
d[, c(mget("hello"))]
# Error: value for ‘hello’ not found # WTF?
d[, {1; mget("hello")}]
# hello
# 1: 1

一般规则是什么?

最佳答案

这真的不是很神秘。首先注意.list 的简写在 data.table .考虑到这一点,这就是正在发生的事情。

您拥有的每一个表达式都会产生一个 未命名 列表或向量,除了 mget它吐出一个命名列表。这就是为什么mget示例已命名结果。在所有其他示例中 data.table仅在非常简单的表达式中推导出名称,相当于 list(items) .还有一些情况,你会得到涉及 .SD 的姓名扣除。 ,但一般来说 - 如果你没有命名它(如 mget 那样)并且它比 list(items) 更复杂,那就别指望名字扣分了。

关于r - data.table 什么时候保留列名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53745905/

24 4 0