我在R中有以下功能:
function.class<-function(CLASS){
ma<<-as.matrix(subset(dft, class == as.character(CLASS)))
# ma[ma==" "]<<-0
ma<-apply(ma, 1,as.numeric,na.rm=TRUE)
ma<-t(ma[-(1:5),])
print(CLASS)
a<-1-colMeans(ma,na.rm=TRUE)
b<-colSums(!is.na(ma))
c<-rep(0,length(a)+length(b))
for (i in 1:length(a)){
c[(2*i-1)]<-a[i]
c[(2*i)]<-b[i]
}
return(c)
}
我传递了以下内容(带上下文):
z<-matrix(0,length(unique(dft$class)),2*(ncol(dft)-5))
name<-as.matrix(unique(dft$class))
for (j in 1:length(unique(dft$class))){
z[j,]<-function.form(name[j,])
}
以下是关于name
的一些事实:
> name
[,1]
[1,] "200"
[2,] "20"
[3,] "100"
[4,] "320"
> summary(name)
V1
100:1
20 :1
200:1
320:1
> typeof(name)
[1] "character"
但是,当我运行循环时,它会将ma
转换为0x46逻辑矩阵,但如果我手动运行for循环尝试执行的操作(即将CLASS
替换为{{1}函数中的{},name[1,]
,name[2,]
等,并将其复制并粘贴到控制台中),它将name[3,]
转换为195x41双矩阵。
这是dft的样子
ma
谢谢!