功能不适用于for循环

时间:2014-10-23 05:30:41

标签: r

这里有一个初学者的问题:我有一个函数cos.dissim,我用它来计算两个向量之间的不相似性,当我用它自己用这样的设置值调用它时它工作正常:< / p>

doc.number = 1
cos.dissim(doc.matrix[doc.number, ], SK$prototype[SK$cluster[doc.number], ])

但是当我尝试将它放在循环中来检查所有30个文档时,代码什么都不做。我没有收到任何类型的错误消息,代码只是没有输出任何内容。

dissim.tot = function(){  
  for(x in 1:30){
    doc.number = x
    cos.dissim(doc.matrix[doc.number, ], SK$prototype[SK$cluster[doc.number], ])
  }
}

我错过了一些明显的东西吗?我是该语言的新手,并没有创建多个for循环。

1 个答案:

答案 0 :(得分:1)

for返回NULL,因此,对于您的工作方法,您需要将每次传递的结果分配给对象。

例如:

sqr <- function(x) x^2 # square x

f <- function() {
  y <- numeric() # initialize the output vector
  for (i in 1:10) {
    y <- c(y, sqr(i)) # append the square of i to y
  }
  return(y)
}

f()

#  [1]   1   4   9  16  25  36  49  64  81 100

那就是说,这样的事也应该有效:

sapply(1:30, cos.dissim, doc.matrix[i, ], SK$prototype[SK$cluster[i], ])