【发布时间】:2017-10-05 21:29:52
【问题描述】:
在数据框“days”中,我想将名为“round.numbers”的函数应用于除名为“id”的列之外的所有列。
根据评论,
days[,-'id'][, lapply(X = .SD, FUN = round.numbers)]
这成功了
但是它会创建一个新表而不是替换原始数据。
days[,-'id'] <- days[,-'id'][, lapply(X = .SD, FUN = round.numbers)]
失败。
【问题讨论】:
-
你好像在用
data.table,试试days[, -"id"][, lapply(X = .SD, FUN = round.numbers'] -
谢谢。有用!但似乎它生成了一个新的 data.table 而不是替换原点。我该如何替换它们。 (id 列保持不变,其余列由函数更改) days[, -'id']
-
因为我想保留id列。
-
我假设我们保留所有行。在这种情况下,您可能只使用 by 语句,但如果这太 hacky 则可能:
newDays <- days[, -"id"][, lapply(.SD, round.numbers][, id := days[, id]] -
DT[, id := NULL]; DT[, names(DT) := lapply(.SD, f)]?:=符号用于替换 data.table 中的列。还有一个实用函数?set,如果你有很多列,很有用..这里的例子:stackoverflow.com/questions/16846380/…
标签: r dataframe data.table lapply