Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用for循环在R中使用manova? anova_test_R_For Loop - Fatal编程技术网

使用for循环在R中使用manova? anova_test

使用for循环在R中使用manova? anova_test,r,for-loop,R,For Loop,首先,您不需要将整个数据传递到anova_test函数中,因为您已经在两个块中传递了它 然后在建模行中,您需要提供实际数据,而不仅仅是列名,并且不需要指定数据集,因为您已经提供了数据 例如: 最后,我不知道你为什么想要这么多这样的成对manova,也许有更好的方法来做你想做的事情(从统计学上讲)考虑用expand.grid捕获两组列名的所有可能组合,然后用Map调用一个元素循环(包装到mappy)而不是三级嵌套的for循环,这些循环不会将结果保存到任何对象 res <- manova(c

首先,您不需要将整个数据传递到
anova_test
函数中,因为您已经在两个块中传递了它

然后在建模行中,您需要提供实际数据,而不仅仅是列名,并且不需要指定数据集,因为您已经提供了数据

例如:


最后,我不知道你为什么想要这么多这样的成对manova,也许有更好的方法来做你想做的事情(从统计学上讲)

考虑用
expand.grid
捕获两组列名的所有可能组合,然后用
Map
调用一个元素循环(包装到
mappy
)而不是三级嵌套的
for
循环,这些循环不会将结果保存到任何对象

 res <- manova(cbind(get(colnames(dataOne)[i]), get(colnames(dataOne)[k])) ~ get(colnames(dataTwo)[j]), data = dataSet)

在循环中你有res,然后你调用summary(res.man)。。也许您先尝试修复此问题,看看错误是否仍然存在?
Error in `[[<-.data.frame`(`*tmp*`, i, value = 1:2) : 
  replacement has 2 rows, data has 1
De plus : Warning message:
In storage.mode(v) <- "double" :

 Error in `[[<-.data.frame`(`*tmp*`, i, value = 1:2) : 
  replacement has 2 rows, data has 1
res <- manova(dataOne[,c(i,k)] ~ dataTwo[,j])
 res <- manova(cbind(get(colnames(dataOne)[i]), get(colnames(dataOne)[k])) ~ get(colnames(dataTwo)[j]), data = dataSet)
# BUILD DATA FRAME OF ALL POSSIBLE COMBINATIONS
params_df <- expand.grid(cat1 = c("age", "child", "balance", "previous"),
                         cat2 = c("age", "child", "balance", "previous"),
                         quant = c("job", "marital", "education", "default", 
                                   "housing", "loan", "contact", "month"))

# REMOVE ROWS WHERE CATEGORIES ARE THE SAME
params_df <- subset(params_df, cat1 != cat2)


# USER-DEFINED METHOD TO CALL manova WITH DYNAMIC FORMULA AND RESULTS
anova_test <- function(dataSet, cat1, cat2, quant) {

   frml <- as.formula(paste0("cbind(", cat1, ",", cat2, ") ~ ", quant))
   res.man <- manova(frml, data = dataSet) 

   res.list <- list(estimates = summary(res.man),
                    aov = summary.aov(res.man))

   return(res.list)
}

# RETREIVE DATA
D <- apply_impute(data)

# BUILD LIST OF MANOVA RESULTS
manova_list <- Map(anova_test, 
                   cat1 = params_df$cat1,
                   cat2 = params_df$cat2, 
                   quant = params_df$quant,
                   MoreArgs = list(dataSet = D))
# DISPLAY SELECT RESULTS BY INDEX AND NAMES
manova_list[[1]]$estimates       
manova_list[[1]]$aov

manova_list[[2]]$estimates
manova_list[[2]]$aov
# ...


# DISPLAY ALL RESULTS
lapply(manova_list, `[[`, "estimates")
lapply(manova_list, `[[`, "aov")