2014-05-19 39 views
4

我需要修改data.table的特定行的某些列。我不斷收到一個錯誤,「未使用的參數(with = F)」。有誰知道如何快速處理這個?以下是使用data.frames和data.table的示例。子集並替換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] 

回答

8

首先 - 你不需要和不應該(作爲良好編程的問題)使用data.table名內[.data.table。其次,你應該儘量避免使用列號 - 這是未來頭痛的根源,應該改爲使用列名。

最後,在data.table中更改列的方法是使用:=運算符就地修改(請參見?':=')。

結合上述所有的,這是你應該做的:

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