我有以下的data.table
x = structure(list(f1 = 1:3, f2 = 3:5), .Names = c("f1", "f2"), row.names = c(NA, -3L), class = c("data.table", "data.frame"))
我希望对data.table
的每一行应用一个函数。该函数func.test
使用参数f1
和f2
,并对它们进行操作,并返回计算出来的值。 假设(作为示例)
func.text <- function(arg1,arg2){ return(arg1 + exp(arg2))}
但我的真实功能更为复杂,包括循环等操作,但最终返回计算出来的值。如何最好地完成这个任务?
.I
,例如像这样x[, func.text(f1, f2), by = .I]
。 - David Arenburgby=.I
是在做什么。它与by=1:nrow(x)
不完全相同,您可以通过比较例如x[, 1, by = .I]
和x[, 1, by = 1:nrow(x)]
来检查。 - eddiby=1:.N
)。 - eddiby
语句,因为他的函数已经按行操作整个数据集,因此即使x[, func.text(f1, f2)]
也可以得到所需的结果。问题在于它将失去data.table
类并变成一个数字向量。添加by = .I
将保留该类,但我不确定为什么或如何保留(很快我可能会从@Arun那里收到一些愤怒的评论,指出我的对data.table
的理解不足)。 - David Arenburg