【发布时间】:2018-12-14 22:20:20
【问题描述】:
给定 data.table dt:
dt <- structure(list(V1 = c("1544018118438041139", "1544018118466235879",
"1544018118586849680", "1544018118601169211", "1544018118612947335",
"1544018118614422179"), V2 = c("162", "162", "161.05167", "158.01309",
"157", "157"), V3 = c("38", "38", "36.051697", "33.01306", "32",
"32"), V4 = c("0.023529414", "0.025490198", "0.023529414", "0.027450982",
"0.03137255", "0.03137255"), V5 = c("1", "1", "1", "1", "1",
"1"), V6 = c("2131230815", "2131230815", "2131230815", "2131230815",
"2131230815", "2131230815"), V7 = c("1", "0", "0", "0", "0",
"-1")), class = c("data.table", "data.frame"), row.names = c(NA,
-6L), .internal.selfref = <pointer: 0x2715f60>)
我希望第一列为bit64::as.integer64(),其余列为as.numeric()
我正在尝试这样做:
dt <- dt[ ,V1 := bit64::as.integer64(V1)]
dt[, lapply(.SD, as.numeric), .SDcols = -c("V1")]
但它似乎没有做我想做的事,请告知如何将特定列更改为 A 类(integer64),将其余列更改为另一个 B 类(比如as.numeric())?
【问题讨论】:
-
但我希望它是第一列和其余列,我不能保证我会始终获得这些列名,我希望它是通用的。 @markus
-
再次@markus 第一列不是“V1”
-
.SDcols = setdiff(names(dt), names(dt)[1]) -
你需要做
dt <- dt[, lapply(...],但不是在第一种情况下,因为:=你通过引用更改V1列。 -
cran.r-project.org/web/packages/data.table/vignettes/… under b)
:=运算符
标签: r data.table