我想将数据框中列的名称传递给for循环以填充矩阵。
这是功能:
function.ami<-function(AMI){
ma<<-as.matrix(subset(dft, ami == as.character(AMI)))
ma[ma==" "]<<-0
ma<<-matrix(as.numeric(ma),ncol=ncol(dft))
return(colMeans(ma[,-(1:6)],na.rm=TRUE))
}
以下是我称之为的方式:
z<-matrix(rep(0,length(unique(dft$ami))*(ncol(dft)-6)),nrow=length(unique(dft$ami)), byrow=TRUE)
for (j in 1:length(unique(dft$ami))){
z[j,]<-function.ami(unique(dft$ami[j]))
}
这是生成一些样本数据的非常笨拙的方法:
df<-data.frame(expand.grid(ami = c("Trilliant","SSN","GPRS","LNNA","SynchTec"),tr.1 = as.character(sample(c("T", "F"), 2, replace = TRUE)),tr.2 = as.character(sample(c("T", "F"), 2, replace = TRUE)),tr.3 = as.character(sample(c("T", "F"), 2, replace = TRUE)),tr.4 = as.character(sample(c("T", "F"), 2, replace = TRUE)),tr.5 = as.character(sample(c("T", "F"), 2, replace = TRUE))))
但是,当我运行此功能时,function.ami(unique(dft$ami[j]))
只会返回相同的值,无论j
是什么。
有没有人有办法做到这一点?我还对如何更加雄辩地执行除了笨重的for-loop方法之外的代码所做的事情以及如何生成示例数据框的想法持开放态度!