将数字作为字符传递给R中的函数

时间:2014-01-22 20:22:50

标签: arrays r function class numeric

我在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

谢谢!

0 个答案:

没有答案