簡體   English   中英

使用全局變量作為列名時使用 data.table 更新列

[英]Updating column using data.table when using global variable as column name

我正在嘗試根據列中的值是否與外部變量匹配來更新 data.table 中的列。 我遇到的問題是在 data.table 語法中使用全局變量作為列名。

明確指定列名按預期工作並更新列。

dt[,`1:4880` := ifelse(`1:4880`==allele, 2, 1)]

但是,當通過變量引用該列時,我無法更新該列:

colname="1:4880"
dt[,..colname := ifelse(..colname==allele, 2, 1)]

output 不會更新由變量名稱描述的列中的值,而是寫入 df$..colname。 奇怪的是,output 是正確的,所以 ifelse function 正在按預期工作,它只是將 output 寫入錯誤的列名。

有沒有辦法讓:= 運算符識別指定為變量的列名?

lhs上,我們可以用()包裝來評估值,然后使用get或在.SDcols中指定它

dt[, (colname) := ifelse(.SD[[1]] ==allele, 2, 1), .SDcols = colname]

目前尚不清楚allele是另一列還是具有某些價值的 object

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM