0
我的問題是關於警告我有時得到的代碼。警告是r數據表地圖警告'更長的參數不是一個更短的長度的倍數'
Warning message:
In mapply(FUN = f, ..., SIMPLIFY = FALSE) :
longer argument not a multiple of length of shorter
這個想法看起來很簡單。我想將列名稱向量(cn)的每一行中的值與另一列中同一行中的值相乘,並用新值替換cn列。我正在構建加權和。重量是foodAvailRatio。
dt.temp <- readRDS("xxx")
cn <- c("usda_code", "item", "foodAvailRatio","item_name", "usda_desc", "IMPACT_code", "Ref_Desc", "RetnDesc", "retentioncode_aus")
cm <- names(dt.temp)[!names(dt.temp) %in% cn]
# multiply all the columns in cm by foodAvailRatio and assign to the cm columns
dt.temp[, (cm) := Map(`*`, mget(cm), foodAvailRatio)]
利用這種替換(dt.cocer.rds)爲XXX,不獲取錯誤。與不同的一個(dt.vege.rds)我得到的錯誤。這兩個具有長度52對於這兩個總和(foodAvailRatio)= 1
。我與微軟開放訴3.3.1在Mac上做這RStudio
'readRDS'在'dt.temp'上調用'setDT',存儲在磁盤上失去了預先分配的列。記錄在[FAQ](http://jangorecki.gitlab.io/data.table/library/data.table/doc/datatable-faq.html#reading-data.table-from-rds-or-rdata-file) 。不知道這是否是這個問題。 – jangorecki
除了Michael的回答,在製作'cm'時可以考慮的另一個調整:setdiff(x,y)'可以用來代替'x [!x%in%y]'。 – Frank