2016-11-22 4 views
0

変更したい値(c("-", "...", "0 0"))を持つ列(dt.commod)のベクトルを作成します。次のコードでいくつかのバリエーションが働くと思いました(prodYears[j]get(prodYears[j]))しかしそれらのどれもしません。rデータテーブルにiという名前の動的な名前が付いています

dt.commod <- data.table::as.data.table(openxlsx::read.xlsx(filePath, colNames = TRUE, cols = NULL, 
                  sheet = commodName)) 
    prodYears <- c("prod_qty_2011", "prod_qty_2012", "prod_qty_2013") 
    for (j in 1:length(prodYears)) { 
    dt.commod[get(prodYears[j]) %in% c("-", "...", "0 0"), prodYears[j] := "0" ] 
    } 

代わりに私が直接、列名を実行した場合、

dt.commod[prod_qty_2011 %in% c("-", "...", "0 0"), prod_qty_2011 := "0"] 

のように、それはそれがになっていないものを。関連する質問にもう少しブラウジングを行った後

+1

奇数再現可能な例を見るのに役立つかもしれません。私は 'for(col in cols)DT [。(vals)、on = col、(col):=" 0 "]' – Frank

答えて

0

は、私はちょうどforループの前に

data.table::setkeyv(dt.commod, prodYears) 

を追加しました。なぜ私はこの作品が理解できませんが、それはありません。

関連する問題