r - r 使用 With 时数据表给出不同的结果
问题描述
我想知道当直接指向列或通过字符指向列时数据表给出不同结果是否有逻辑原因。
例如
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
代码的第二部分发生了什么?
解决方案
在代码的第二部分中,您选择了 data.table 的第一列。
# Equivalent too
iris_dt[, 1, with = FALSE]
# Because
NROW('Species') == 1 # TRUE
# Also
unique('Species') == 'Species' # TRUE
'Species'
只是一个长度为 1 的(字符)向量并NROW()
返回它的长度。
我认为您正在寻找的是:
iris_dt[, uniqueN(get(col))] # 3
推荐阅读
- excel - VBA - 根据列值删除行
- reactjs - 在 React 中获取 post 对象和 slug 以正确更新
- assembly - Mips 腐烂加密
- java - 如何使用 Spring Boot 在 Keycloak 中设置 redirect_uri
- python - Django:在 /admin 处不存在
- amazon-ec2 - 使用 Boto3 按实例 ID 获取 EC2 实例每月的总 NetworkOut 字节数
- sql - 如何在碧玉报告中打印带有“表达式时打印”的字段?
- python - 如何预测 scikit-learn 中未知函数的组件?
- javascript - 让 Clock 组件真正可重用和封装?在反应 JS 中?
- angular - 如何路由 Angular 6 级联下拉列表?