gpt4 book ai didi

r - 如何将变量的值分配给 plyr 中的列名?

转载 作者:行者123 更新时间:2023-12-04 18:44:59 24 4
gpt4 key购买 nike

有没有办法将变量的值分配给 plyr 中的结果列名?
所以在这段代码中...

column_name <- 'total'
df <- data.frame(a=c('a','b'), b=c(1,2))
ddply(df, .(a), summarise, column_name=sum(b))

如您所知,这会输出一个由变量 a 组成的数据框。和 column_name .但是,我想得到的是变量 atotal ,其中 total由变量的值动态分配,因为实际上,我想在循环中处理它,我不能直接在 ddply 函数中指定它。

供您引用,此代码不起作用。
ddply(df, .(a), summarise, get(column_name)=sum(b))

那么有没有什么办法可以解决呢?

最佳答案

有几种方式:

> column_names <- c('total', 'latot')
> df <- data.frame(a=c('a','b'), b=c(1,2))
>
> # temporal variable
> for (cn in column_names) {
+ ret <- ddply(df, .(a), summarise, ..x=sum(b))
+ ret <- rename(ret, c(..x = cn))
+ print(ret)
+ }
a total
1 a 1
2 b 2
a latot
1 a 1
2 b 2
>
> # ept solution
> for (cn in column_names) {
+ print(eval(parse(text = paste0("ret <- ddply(df, .(a), summarise,", cn, "=sum(b))"))))
+ }
a total
1 a 1
2 b 2
a latot
1 a 1
2 b 2
>
> # dynamic generation of call
> for (cn in column_names) {
+ args <- alist(df, .(a), summarize, sum(b))
+ names(args) <- c("", "", "", cn)
+ print(do.call("ddply", args))
+ }
a total
1 a 1
2 b 2
a latot
1 a 1
2 b 2

关于r - 如何将变量的值分配给 plyr 中的列名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16454943/

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