我假设你使用data.table
。然后你可以使用setdiff
如下面的例子:
> days = data.table(a = 1:2, b = 3:4, id = c(1, 1))
>
> days <- days[, lapply(X = .SD, FUN = identity),
+ .SDcols = setdiff(colnames(days), "id")]
> days
a b
1: 1 3
2: 2 4
或刚落id
下手
> days = data.table(a = 1:2, b = 3:4, id = c(1, 1))
> days <- days[, id := NULL][, lapply(X = .SD, FUN = identity)]
> days
a b
1: 1 3
2: 2 4
如果你想保持id
列那么这应该做的(我加了这个后看到您的评论)
> set.seed(23812349)
> days = data.table(a = rnorm(2), b = rnorm(2), id = c(1, 1))
> days
a b id
1: -1.461587 0.2130853 1
2: 1.062314 0.8523587 1
>
> .cols <- setdiff(colnames(days), "id")
> days[, (.cols) := lapply(.SD, round, digits = 1), .SDcols = .cols]
> days
a b id
1: -1.5 0.2 1
2: 1.1 0.9 1
看起来你正在使用'data.table',尝试'天[, - “ID”] [,lapply(X = .SD,FUN = round.numbers']' –
谢谢。有用!但它似乎会生成一个新的data.table,而不是替换原点。我该如何替换它们。 (id列保持不变,其余列由函数改变)days [,-'id'] < - days [,-'id'] [,lapply(X = .SD,FUN ='round.numbers ')]这是行不通的... – Harold
因为我想保留id列。 – Harold