我想从下面20
中特定列(例如dist
列)的每一行中减去一个整数(例如data.table
):
require(data.table)
CARS <- data.table(cars)
head(CARS)
speed dist
1: 4 2
2: 4 10
3: 7 4
4: 7 22
5: 8 16
6: 9 10
> CARS[CARS$dist - 20,]
Error in `[.data.table`(CARS, CARS$dist - 20, ) :
Item 1 of i is -18 and item 4 is 2. Cannot mix positives and negatives.
看起来data.table
不喜欢混合正数和负数。我的对象CARS
的类是:
class(CARS)
# [1] "data.table" "data.frame"
在基准测试方面,我希望我的代码尽可能快地运行。因此,很高兴看到是否有一些替代可能的解决方案,以性能速度为基础进行基准测试。
答案 0 :(得分:5)
您正在将结果传递给var dic = jaggedList.GroupBy(lst => string.Join(" ", lst.Take(2)))
.ToDictionary(el => el.Key, el => el.Count());
的{{1}}变量。你不能在这里混合使用负值(下降行)和正值。
您收到与data.frame
类似的错误i
您的问题建议您要将参数传递给[.data.table
(并使用 x <- data.frame(x=1:5)
x[-1:2]
# Error in `[.default`(x, -1:2) :
# only 0's may be mixed with negative subscripts
y <- data.table(x=1:5)
y[-1:2,]
# Error in `[.data.table`(y, -1:2, ) :
# Item 1 of i is -1 and item 3 is 1. Cannot mix positives and negatives.
您不需要j
前缀
data.table
答案 1 :(得分:-1)
如果您的目标是将所有负数替换为0,那么一个简单的解决方案就是:
CARS[(dist - 20)<=0,dist:=0]
CARS[(dist - 20)>0,dist:dist-20]