使用dplyr将两列转换为625列

使用dplyr将两列转换为625列,r,dplyr,R,Dplyr,我有一个函数my_function,它接受两个任意长度的数值向量,并将它们转换为一个625维的数值向量 我有一个dataframedata,它包括三列:一个因子组、一个数值变量X和一个数值变量Y 我想按照以下思路进行操作: library(dplyr) data %>% group_by(Group) %>% summarize(my_625_new_columns=my_function(X, Y)) 结果应该是一个626列的数据帧:一个列组,然后是625列,对应于my

我有一个函数
my_function
,它接受两个任意长度的数值向量,并将它们转换为一个625维的数值向量

我有一个dataframe
data
,它包括三列:一个因子组、一个数值变量X和一个数值变量Y

我想按照以下思路进行操作:

library(dplyr)

data %>%
  group_by(Group) %>%
  summarize(my_625_new_columns=my_function(X, Y))
结果应该是一个626列的数据帧:一个列组,然后是625列,对应于my_函数输出中的每个元素。每组应有一行


这可以在dplyr的框架内实现吗?

您可以使用
plyr
中的
ddply
来实现这一点
do
也可从
dplyr
工作

## Some data
set.seed(0)
dat <- data.frame(Group=factor(rep(1:2, 100)), X=rnorm(100), Y=rnorm(100))

## A random function to apply to groups
## returns data.frame with same number of columns as length of x and y
func <- function(x, y) as.data.frame(t( (x+y)/2 ))

library(plyr)
res <- ddply(dat, .(Group), function(x) {
    func(x$X, x$Y)
})
res
#   Group        V1        V2         V3         V4         V5         V6
# 1     1  1.022407 0.3569047 -0.3578722 -1.1046582 -0.2532319  0.1755368
# 2     2 -0.551505 0.6595048 -0.4816156  0.6653634  2.0414753 -0.8856480
# ...

## With `do` from dplyr
library(dplyr)
dat %>% group_by(Group) %>% do(func(.$X, .$Y))
##一些数据
种子集(0)
dat