在R中使用data.table
时,我正在try 连接两个列并创建一个新列,其中我具有上一步的唯一值.在下面的示例中,您可以看到代码在第z1
帧上运行良好,但在第z2
帧时出现错误.但是,这两个表是以相同的方式创建的.这些列具有不同的信息,但这不应该是相同代码在z2
上不起作用的原因.
非常感谢你的帮助,如果我说不清楚,请告诉我.
最好的,
library(data.table)
z1 <- data.table(a = c("ARE_2014_HIES_D1_INC_GROUP", "ARE_2014_HIES_D1_INC_GROUP"),
b = c("ARE_2014_HIES_D1_INC_GROUP", "ARE_2015_HIES_D1_INC_GROUP"))
z2 <- data.table(a = c("ARG_1980_EPH_D2_INC_GROUP", "ARG_1980_EPH_D2_INC_GROUP"),
b = c("ARG_1986_EPH_D2_INC_HIST", "ARG_1986_EPH_D2_INC_HIST"))
z1[,
cache_id := as.list(apply(.SD, 1, unique)),
.SDcols = c("a", "b")
]
z1[]
#> a b
#> 1: ARE_2014_HIES_D1_INC_GROUP ARE_2014_HIES_D1_INC_GROUP
#> 2: ARE_2014_HIES_D1_INC_GROUP ARE_2015_HIES_D1_INC_GROUP
#> cache_id
#> 1: ARE_2014_HIES_D1_INC_GROUP
#> 2: ARE_2014_HIES_D1_INC_GROUP,ARE_2015_HIES_D1_INC_GROUP
z2[,
cache_id := as.list(apply(.SD, 1, unique)),
.SDcols = c("a", "b")
]
#> Error in `[.data.table`(z2, , `:=`(cache_id, as.list(apply(.SD, 1, unique))), : Supplied 4 items to be assigned to 2 items of column 'cache_id'. If you wish to 'recycle' the RHS please use rep() to make this intent clear to readers of your code.
z2[]
#> a b
#> 1: ARG_1980_EPH_D2_INC_GROUP ARG_1986_EPH_D2_INC_HIST
#> 2: ARG_1980_EPH_D2_INC_GROUP ARG_1986_EPH_D2_INC_HIST
创建于2023-06-12年第reprex v2.0.2页