r - 子集和替换 data.table 中的行和列

标签 r data.table

我需要修改 data.table 的特定行的某些列。我不断收到错误消息,“未使用的参数(with=F)”。有谁知道如何快速处理这个问题?下面是一个同时使用 data.frames 和 data.table 的例子。

谢谢。

     test.df <- data.frame(a=rnorm(100, 0, 1), b=rnorm(100, 0, 1), c=rnorm(100,0,1))
     test.dt <- as.data.table(test.df)

     test.df[test.df$a<test.df$b,c(1,2)] <- 10* test.df[test.df$a<test.df$b,c(1,2)]

     test.dt[test.dt$a<test.dt$b, c(1,2), with=F] <- 10* test.dt[,c(1,2),with=F][test.dt$a<test.dt$b, c(1,2), with=F]

最佳答案

首先 - 你不需要,也不应该(作为一个好的编程问题)使用 data.table里面的名字[.data.table .

其次,您应该尽可能避免使用列号 - 这是 future 头痛的根源,而应该旨在使用列名。

最后,在data.table中更改列的方法的就是使用 :=操作符就地修改(见 ?':=')。

结合以上所有内容,这是您应该做的:

test.dt[a < b, `:=`(a = 10 * a, b = 10 * b)]

关于r - 子集和替换 data.table 中的行和列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23746097/

相关文章:

r - 以给定的纵横比保存绘图

r - 强制 R 停止绘制缩写轴标签(科学计数法) - 例如1e+00

r - 如何做一个 BETWEEN 合并 data.table 的方式?

python - 如何根据三列中的顺序将三列合并为一列

r - 使用 ddply R 对大数据框中的大量列进行求和和 ifelse 的更好更快的方法

r - 使用 rvest 抓取 - 当标签不存在时使用 NAs 完成

R data.table 连接两个表并保留所有行

r - 数据争论 : Aggregating by group sequentially reducing

regex - 从括号内引用 data.table 列名称

r - 加快大型数据帧的 For 循环