0
私の質問は警告に関するものです時々コードを取得します。警告はrデータテーブルマップの警告「より長い引数は長さの短い倍数ではありません」
Warning message:
In mapply(FUN = f, ..., SIMPLIFY = FALSE) :
longer argument not a multiple of length of shorter
と思われます。私は、別の列の同じ行にある列名(cn)のベクトルの各行の値を複数倍にし、cn列を新しい値で置き換えたいとします。私は加重合計を構成しています。体重はfoodAvailRatioです。この置換(xxxのためdt.cocer.rds)で
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)]
は、エラーを得ることはありません。別の1(
dt.vege.rds)私はエラーを取得している。どちらも、両方の合計のために長さ52を持っている(foodAvailRatio)= 1
。?私はMac上のMicrosoftのオープンRのV 3.3.1で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
マイケルの答えに加えて、 'cm 'を作るときに考慮すべきもう一つの調整が' x [!x%in%y] 'の代わりに' setdiff(x、y) 'を使うことができます。 – Frank