分组数据帧上dplyr错误,ezANOVA错误,而不是plyr错误

分组数据帧上dplyr错误,ezANOVA错误,而不是plyr错误,r,dplyr,plyr,R,Dplyr,Plyr,我有一个现有的工作流程,我使用ez::ezANOVA将方差分析(ANOVA)应用于按因子分割的数据帧的每个部分。我想使用plyr中的ddply将我的旧版本更新为使用dplyr的新版本。下面是一个使用ddply的玩具示例: require(dplyr) require(plyr) require(ez) X = data.frame( x1 = rep(factor(letters[1:2]), 20), x2 = rep(factor(letters[1:2]), 10, each =

我有一个现有的工作流程,我使用
ez::ezANOVA
将方差分析(ANOVA)应用于按因子分割的数据帧的每个部分。我想使用
plyr
中的
ddply
将我的旧版本更新为使用
dplyr
的新版本。下面是一个使用
ddply
的玩具示例:

require(dplyr)
require(plyr)
require(ez)

X = data.frame(
  x1 = rep(factor(letters[1:2]), 20),
  x2 = rep(factor(letters[1:2]), 10, each = 2),
  id = factor(sort(rep(1:10, 4)))
)

# stack individual data frames into one large data frame
df = X[rep(seq_len(nrow(X)), 10),]

# add an index column to track group
df$grp = sort(rep(1:10, nrow(X)))

# add an arbitrary outcome variable
df$y = runif(400)

# define a function that extracts p-values from ezANOVA output
PVals = function(df) {
  ezANOVA(
    data = df, dv = y, wid = id, 
    within = .(x1, x2))[[1]][5]
}
我用ddply得到我想要的:

ddply(df, .(grp), PVals)
我想使用dplyr方法:

df %>% group_by(grp) %>% do(PVals(.))
但这会产生错误:

ezANOVA_main(数据=数据,dv=dv,wid=wid,in=in,:“dv”必须是数字


因此,我的假设是,
groupby
返回一个对象,该对象不包含与原始数据帧相同的变量类?我如何解决这个问题?

我发现了一个简单的错误。我的函数
PVals
需要一个数据帧。这项工作:
df%>%groupby(grp)%%>%do(PVals(data.frame(.))
我发现了一个简单的错误。我的函数
PVals
需要一个数据帧。这是有效的:
df%>%groupby(grp)%%>%do(PVals(data.frame)())