【发布时间】:2017-06-06 12:53:19
【问题描述】:
这可能已经得到解答,但无法完全找到我正在寻找的答案。我正在尝试将计算 3 个变量的函数的输出写入 data.table。
目前我正在复制该函数三次(使用三个不同的名称),每次都返回一个不同的变量。这需要更多时间,因为它运行三次。我明白
可能有更好的方法来做到这一点,使用列表或一些独特的data.table 命令。
非常感谢您提供的任何意见以简化此过程。下面是我如何一次调用一个变量的示例。
示例
fn_1 <- function(a, b, c, d){
for (i in 1:b) { col_1[i] = calculation }
for (i in 1:c) { col_2[i] = calculation }
for (i in 1:d) { col_3[i] = calculation }
return(col_1)
}
data[ ,column_1 := fn_1(a,b,c,d) ,by= .(e,f) ]
fn_2 <- function(a, b, c, d){
for (i in 1:b) { col_1[i] = calculation }
for (i in 1:c) { col_2[i] = calculation }
for (i in 1:d) { col_3[i] = calculation }
return(col_2)
}
data[ ,column_2 := fn_2(a,b,c,d) ,by= .(e,f) ]
【问题讨论】:
-
请展示一个可重现的小例子
-
一般建议:使用返回 3(或 n)个输出列表的函数,并将其分配给向量中的 3(n)个新列,如
data[, c("a","b","c") := fun_w_3_outputs(...)] -
这样,函数定义内部的
for循环使用表示col_1、col_2、col_3的计算结果可能有不同长度的b、@ 987654329@, 和d, resp. 这是有意的吗?
标签: r function data.table