gpt4 book ai didi

r - 在 R 中修改 data.table 中的值

转载 作者:行者123 更新时间:2023-12-04 21:58:32 26 4
gpt4 key购买 nike

我是 data.table 的新手,我在这门课上遇到了问题。

我有一个包含 2 列的表 (data1): Couple 和 Ratio。 Couple 是 data.table 的 Key。

我正在尝试修改表中的值。

当我编写以下代码时:

(cple is an existing value of Couple) 

data1[cple]$Ratio[1]<-0 #I get more than 50 warnings and it doesn't work

data1$Ratio[1]<-0 # It works perfectly (but it's not the same as the above code)

该错误似乎与键有关,但我不知道是什么?

下面是一个例子:
 >data1<-data.table(Couple=c("a","a","b","b"),Ratio=1:4)
>data1
Couple Ratio
1: a 1
2: a 2
3: b 3
4: b 4
>setkey(data1,Couple)

>data1["a"]$Ratio[1]<-2 #doesn't work warning message

WARNING:
#In `[<-.data.table`(`*tmp*`, "a", value = list(Couple = c("a", "a" :
# Coerced 'double' RHS to 'integer' to match the column's type; may have truncated precision. Either change the target column to 'double' first (by creating a new 'double' vector length 4 (nrows of entire table) and assign that; i.e. 'replace' column), or coerce RHS to 'integer' (e.g. 1L, NA_[real|integer]_, as.*, etc) to make your intent clear and for speed. Or, set the column type correctly up front when you create the table and stick to it, please.


>data1$Ratio[1]<-2 #works
>data1
Couple Ratio
1: a 2
2: a 2
3: b 3
4: b 4

谢谢

最佳答案

从你的问题的第一部分来看,你实际上想要做这样的事情:

data1[cple,Ratio:=c(0L,Ratio[-1])]

这会在 data.table 键中对 cple 的值进行二分搜索,然后在这个子集上工作。除了第一个整数零与 Ratio 值组合,结果向量通过引用 Ratio 分配。

关于r - 在 R 中修改 data.table 中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15573171/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com