我正在尝试创建一个循环,以使用ppcor
函数对存储在数据帧中的变量执行相关操作(并在将来进行部分相关操作)。对于所有相关性,第一个变量(A)都将保持不变,而第二个变量(B)将是数据框中下一列中的下一个变量。我大约有1000个变量。
下面以mtcars数据集为例,因为它与我的数据处于同一布局。
当在数组(“ tmp_df”)上运行ppcor
之前,使用cbind手动绑定2列(感兴趣的2个变量)手动执行时,我已经能够成功完成操作。这样便可以将关联操作(“ mpg_cycl”),(“ mpg_disp”)的输出绑定到单个对象中。但是,我无法让此操作中的任何一个循环工作。有什么想法吗?
library("MASS")
install.packages("ppcor")
library("ppcor")
mtcars_df <- as.data.frame(mtcars)
tmp_df = cbind(mtcars_df$mpg, mtcars_df$cycl)
mpg_cycl <- pcor(as.matrix(tmp_df), method = 'spearman')
tmp_df1= cbind(mtcars_df$mpg, mtcars_df$disp)
mpg_disp <- pcor(as.matrix(tmp_df1), method = 'spearman')
combined_table <- do.call(cbind, lapply(list("mpg_cycl" = mpg_cycl,
mpg_disp" = mpg_disp), as.data.frame, USE.NAMES = TRUE))
for (i in mtcars_df[2:7]){
tmp_df = (cbind(i, mtcars_df$mpg)
i <- pcor(as.matrix(tmp_df), method = 'spearman')
write.csv(i, file = paste0("MyDataOutput",i[1],".csv")
}
我希望循环将两个相关结果输出到MyDataOutput csv文件。但这会生成一条错误消息,我以为我在正确的位置?:
错误:出现意外符号: “ tmp_df =(cbind(i,mtcars_df $ mpg) 我”
即使在末尾添加大括号也无法解决问题,因此我将其遗漏,因为它引入了另一个错误消息'}'
答案 0 :(得分:0)
我已经重做了一些代码,并修复了丢失的)
,}
,"
。现在,for cyckle输出文件的名称为变量名。希望这会有所帮助。
library("MASS")
#install.packages("ppcor")
library("ppcor")
mtcars_df <- as.data.frame(mtcars)
tmp_df = cbind(mtcars_df$mpg, mtcars_df$cycl)
mpg_cycl <- pcor(as.matrix(tmp_df), method = 'spearman')
tmp_df1= cbind(mtcars_df$mpg, mtcars_df$disp)
mpg_disp <- pcor(as.matrix(tmp_df1), method = 'spearman')
combined_table <- do.call(cbind, lapply(list("mpg_cycl" = mpg_cycl,
"mpg_disp" = mpg_disp), as.data.frame, USE.NAMES = TRUE))
for(i in colnames(mtcars_df[2:7])){
tmp_df = mtcars_df[c(i,"mpg")]
i_resutl <- pcor(as.matrix(tmp_df), method = 'spearman')
write.csv(i_resutl, file = paste0("MyDataOutput_",i,".csv"))
}
保存前合并:
dta <- c()
for(i in colnames(mtcars_df[2:7])){
tmp_df = mtcars_df[c(i,"mpg")]
i_resutl <- pcor(as.matrix(tmp_df), method = 'spearman')
dta <- rbind(dta,c(i,(unlist( i_resutl))))
}