在列名称中使用大于号和小于号连接 data.tables 时出现问题
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
当列名有 >(大于)或 <(小于)符号时,我尝试加入这些列,带符号的列被修剪,我得到这样的错误:
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