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)
}

ご覧のとおり、文字ベクトルを作成して出力します。paste0したがって、この文字ベクトルを R オブジェクトに書き込んでから、 (collapse 引数を使用するか、" " を置き換えるために) このオブジェクトを編集できます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_character_ではなく、「NA」と言う文字です. したがって、 is.na() は機能しません。

于 2013-10-26T19:01:10.507 に答える