【发布时间】:2020-03-03 11:56:55
【问题描述】:
我想知道数据表在直接指向列或通过字符指向列时给出不同结果是否有逻辑原因。
例如
library(data.table)
iris_dt <- data.table(iris)
iris_dt[, NROW(unique(Species))]
# 3
col <- 'Species'
iris_dt[, NROW(unique(col)), with = FALSE]
# Prints the Sepal Length, which does not make sense to me
代码的第二部分发生了什么?
【问题讨论】:
-
unique('Species')带给你什么? -
好的,那我明白为什么它返回第一列了。但为什么它不返回“3”?因为我只是想通过字符向量而不是直接在第一个语句中调用列。
-
它返回你的角色对象
"Species"的长度,即1。你想要的大概是iris_dt[, NROW(unique(iris[col])), with=FALSE]。
标签: r data.table