带有引号列的数据表子集缺乏矢量化

亚当·特雷维森(Adam Trevisan)

我发现,当我使用数据表并使用带引号的字符串将行和列作为子集并尝试将结果乘以向量时,并不会乘以所有值,而只会乘以第一个值。有这种现象的原因吗?

library(data.table)

v1 <- seq(1,10)

dtab <- data.table('a' = v1)
dframe <- data.frame('a' = v1)

dframe$a * dtab[2, "a"]
# a
# 1: 2

dtab$a * dtab[2, "a"]
# a
# 1: 2

dframe$a * dtab[2, a]
#  2 4 6 8 10 12 14 16 18 20

dtab$a * dframe[2, 'a']
#  2 4 6 8 10 12 14 16 18 20

packageVersion('data.table')
# 1.12.8
阿克伦

dtab[2, "a"]仍然是一个data.table具有一行,

str(dtab[2, "a"])
#Classes ‘data.table’ and 'data.frame': 1 obs. of  1 variable:
#  $ a: int 2

而下面的结果是 vector

str(dtab[2, a])
#int 2

根据 ?data.table

只要j返回一个列表,该列表的每个元素都会成为结果data.table中的一列。当j的输出不是列表时,输出将原样返回(例如x [,a]返回列向量a),除非使用by,在这种情况下,为了方便起见,将其隐式包装在列表中(例如x [,sum(a),by = b]将创建一个名为V1的列,每个组的值均为sum(a)。

当j是列名称或要选择的位置的向量时(如data.frame)。不再需要使用with = FALSE。

我们可以使用[[1]]将其转换为向量,unlist然后进行乘法

dframe$a * dtab[2, "a"][[1]] 
#[1]  2  4  6  8 10 12 14 16 18 20

如果我们有一个data.table/data.frame,则单位是一列,而不是列中的元素

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

复杂数据表子集和矢量化处理

来自分类Dev

矢量化数据表(例如grepl或类似数据)以进行大数据字符串比较

来自分类Dev

在熊猫数据框列上带有计数器的矢量化功能

来自分类Dev

在熊猫数据框列上带有计数器的矢量化功能

来自分类Dev

带有tfidf和计数矢量化器的gridsearchcv

来自分类Dev

数据表中带有条件的子集

来自分类Dev

数据表中带有条件的子集

来自分类Dev

对数据帧中的行子集使用Apply函数-矢量化解决方案

来自分类Dev

带有下拉列的数据表

来自分类Dev

熊猫数据框矢量化采样

来自分类Dev

矢量化数据帧创建?

来自分类Dev

熊猫列的矢量化“和”

来自分类Dev

有效的日期矢量化

来自分类Dev

带有索引数组的numpy 3D数组矢量化访问

来自分类Dev

matlab:一个棘手的矢量化,函数带有2个嵌套循环

来自分类Dev

if else 语句基于 numpy 中的二进制数组,带有矢量化函数

来自分类Dev

numpy矢量化

来自分类Dev

熊猫矢量化

来自分类Dev

矢量化算法

来自分类Dev

矢量化列表

来自分类Dev

在2个Pandas数据框列之间进行矢量化/矩阵计算

来自分类Dev

如何从pandas数据框中的bool和float列计算新的矢量化列?

来自分类Dev

具有熊猫数据框的矢量化Haversine公式

来自分类Dev

数据表,将数据表导出到列值带有逗号的CSV文件

来自分类Dev

Laravel,数据表,带有关系计数的列

来自分类Dev

数据表-带有重音的单个列搜索被中和

来自分类Dev

数据表,带有计数器列打印

来自分类Dev

寻找一种更有效的方式来矢量化带有不同行信息的CSV

来自分类Dev

矢量化熊猫数据系列的标准差计算