我想根據來自另一個數據表的外部值更新數據表的某些指定列中的值。根據外部數據表更新指定列中的值
我知道如何通過變量做這個變量,但我想更有效的解決方案,我可以自動化,可能使用lapply
UPDATE:我的數據(在下面的例子中相當於mtcars
)設置有其他列我不想更新。
對於可再現例如,運行第一
# Load library
library(data.table)
# load data
data(mtcars)
# create another Data Table which we'll use as external reference
# this table shows the number of decimals of those variables we want to modify in mtcars
var <- c("mpg","disp","hp")
Decimal <- c(1,3,2)
DT <- cbind.data.frame(var, Decimal)
# convert into data.table
setDT(DT)
setDT(mtcars)
我此代碼段的代碼,通過柱
mtcars[, mpg := mpg/10^DT[var=="mpg", Decimal] ]
mtcars[, disp := disp/10^DT[var=="disp", Decimal] ]
mtcars[, hp := hp /10^DT[var=="hp", Decimal] ]
此代碼工作正常,並讓所需的結果更新列。
所需的結果
用於像這樣的mtcars
第一行:
> mpg disp hp
> 1: 21.0 160 110
,現在它看起來像這樣:
> mpg disp hp
> 1: 2.10 0.160 1.10
是否有使用function
一個更有效的解決方案,lapply
等?
我應該更清楚@akrun。現在它工作完美! –
@RafaelPereira感謝您的反饋。 – akrun