1
   data(iris)
   library(RSNNS)
   library(clue)
   iris = iris[sample(1:nrow(iris),length(1:nrow(iris))),1:ncol(iris)]
   irisValues= iris[,1:4]
   irisTargets = decodeClassLabels(iris[,5])
   iris = splitForTrainingAndTest(irisValues, irisTargets, ratio=0.4)
   km<-kmeans(iris$inputsTrain,3)
   scorekm<-function(km, x,...)
   {
   data=NA
   args<-list(x,...)
   for(i in seq(from=1,to=nargs()-1,by=4))
   {
   data<-rbind(c(args[[i]],args[[i+1]],args[[i+2]],args[[i+3]]),data)
   }
   result<-cl_predict(km,data)
   result<-paste(result,";",sep="")
   print(result, quote=FALSE)
 }
scorekm(km,5.9,3.0,5.1,1.8,6.2,3.4,5.4,2.3,6.2,2.2,4.5,1.5 )
[1] 2;  3;  2;  NA;

任何人都可以帮助删除输出中数字之间的空格并在输出中删除NA;吗?我希望我的输出看起来像这样[1]2;3;2

4

1 回答 1

1

嗯,虽然我真的不明白这里的问题,但我会试一试:函数scorekm看起来像这样。

scorekm <- function(km, x,...)
{
data=NA
args<-list(x,...)
for(i in seq(from=1,to=nargs()-1,by=4))
{
data<-rbind(c(args[[i]],args[[i+1]],args[[i+2]],args[[i+3]]),data)
}
result<-cl_predict(km,data)
result<-paste(result,";",sep="")
print(result, quote=FALSE)
}

如您所见,它创建一个字符向量并打印它。因此,您可以将此字符向量写入 R 对象,然后使用paste0(使用折叠参数或gsub替换 "" 来编辑此对象。例如像这样:

x <- scorekm(km,5.9,3.0,5.1,1.8,6.2,3.4,5.4,2.3,6.2,2.2,4.5,1.5 )
gsub("NA","",paste0(gsub(";","",x),collapse=";"))

根本不喜欢函数的质量,NA 似乎不是真正的 NA,只是一个说“NA”的字符而不是 NA_character_ 。因此 is.na() 不起作用。

于 2013-10-26T19:01:10.507 回答