[英]Issue when joining data.tables with greater than and lesser than signs in column names
當列名稱具有 >(大於)或 <(小於)符號並且我嘗試加入這些列時,帶有符號的列被修剪,並且出現如下錯誤:
colnamesInt(x, names(on), check_dups = FALSE) 中的錯誤:指定列的參數指定不存在的列:cols[1]='COLUMN WITH'
重現問題的代碼
library(data.table)
table_a <- data.table(
`COLUMN WITH >FAILS` = character(),
BLA = integer(),
BLO = integer()
)
table_b <- data.table(
`COLUMN WITH >FAILS` = character(),
BLA = integer(),
BLI = integer(),
BLU = integer()
)
on = setdiff(names(table_a), c("BLA", "BLU", "BLO"))
table_a[table_b, on = on]
我草率的解決方法是在連接之前替換特殊字符並將原始列名稱放在連接之后,它可以工作但看起來不太優雅。 我不知道這是否是一個已知問題,我還沒有找到任何關於此的文檔。 你能想出更好的方法來解決這個問題嗎?
引號內的反引號允許在連接中使用保留符號:
table_a[table_b, on = "`COLUMN WITH >FAILS`"]
Empty data.table (0 rows and 6 cols): COLUMN WITH >FAILS,BLA,BLO,i.BLA,BLI,BLU
或更一般地說:
table_a[table_b, on = paste0("`",on,"`")]
Empty data.table (0 rows and 6 cols): COLUMN WITH >FAILS,BLA,BLO,i.BLA,BLI,BLU
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.