我試圖以類似的方式操縱一些data.tables,並且想寫一個函數來完成此操作。我想傳入一個參數,其中包含將執行操作的列的列表。當列的向量聲明是:=運算符的左側時,此函數可以正常工作,但如果聲明較早(或傳入函數),則不會。以下代碼顯示了該問題。從R data.table刪除多個列與刪除列的參數
dt = data.table(a = letters, b = 1:2, c=1:13)
colsToDelete = c('b', 'c')
dt[,colsToDelete := NULL] # doesn't work but I don't understand why not.
dt[,c('b', 'c') := NULL] # works fine, but doesn't allow passing in of columns
錯誤是「添加新列'colsToDelete',然後指定NULL(刪除它)。」很明顯,它將'colsToDelete'解釋爲一個新的列名。做沿着這些路線
dt[, colNames := lapply(.SD, adjustValue, y=factor), .SDcols = colNames]
我加入R東西的時候,而是更有經驗一些其他語言發生
同樣的問題,所以這可能是一個愚蠢的問題。