gpt4 book ai didi

r - 将应用结果分配给数据框的多列

转载 作者:行者123 更新时间:2023-12-02 08:30:06 25 4
gpt4 key购买 nike

我想通过对每一行应用函数 f 来处理数据框 df 中的所有行。由于函数 f 返回具有两个元素的数字向量,我想将各个元素分配给 df 中的新列。

示例 df,返回两个元素的简单函数 f 以及我使用 apply 进行的试验

df <- data.frame(a = 1:3, b = 3:5)

f <- function (a, b) {
c(a + b, a * b)
}

df[, c('apb', 'amb')] <- apply(df, 1, function(x) f(a = x[1], b = x[2]))

这不起作用结果按列分配:

> df
a b apb amb
1 1 3 4 8
2 2 4 3 8
3 3 5 6 15

最佳答案

您也可以使用 Reduce 而不是 apply 因为它通常更有效。您只需要稍微修改您的函数以使用 cbind 而不是 c

f <- function (a, b) {
cbind(a + b, a * b) # midified to use `cbind` instead of `c`
}

df[c('apb', 'amb')] <- Reduce(f, df)
df
# a b apb amb
# 1 1 3 4 3
# 2 2 4 6 8
# 3 3 5 8 15

注意:只有当您只有两列(如您的示例)时,这才会很好地工作,因此,如果您的数据集中有更多列,请仅在子集上运行它

关于r - 将应用结果分配给数据框的多列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27919286/

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