gpt4 book ai didi

在 dplyr mutate() 中返回一个列表

转载 作者:行者123 更新时间:2023-12-03 23:50:55 25 4
gpt4 key购买 nike

我在现实世界中的问题中有一个返回列表的函数。有没有办法将它与 dplyr mutate() 一起使用?这个玩具示例不起作用 -:

it = data.table(c("a","a","b","b","c"),c(1,2,3,4,5), c(2,3,4,2,2))

myfun = function(arg1,arg2) {

temp1 = arg1 + arg2
temp2 = arg1 - arg2
list(temp1,temp2)

}

myfun(1,2)

it%.%mutate(new = myfun(V2,V3))

我看到它在新变量的第一个“列”中循环遍历函数的输出,但不明白为什么。

谢谢!

最佳答案

使用 data.table 执行此操作的惯用方法将使用 := (通过引用赋值)运算符。这是一个插图:

it[, c(paste0("V", 4:5)) := myfun(V2, V3)]

如果你真的想要一个列表,为什么不:
as.list(it[, myfun(V2, V3)])

或者,也许这就是您想要的,但为什么不直接使用 data.table功能:
it[, c(.SD, myfun(V2, V3))]
# V1 V2 V3 V4 V5
# 1: a 1 2 3 -1
# 2: a 2 3 5 -1
# 3: b 3 4 7 -1
# 4: b 4 2 6 2
# 5: c 5 2 7 3

请注意,如果 myfun命名它的输出,然后名称将显示在最终结果列中:
#    V1 V2 V3 new.1 new.2
# 1: a 1 2 3 -1
# 2: a 2 3 5 -1
# 3: b 3 4 7 -1
# 4: b 4 2 6 2
# 5: c 5 2 7 3

关于在 dplyr mutate() 中返回一个列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21630406/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com