2013-10-26 31 views
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;2cl_predict輸出在R

+0

你去那裏:'[1] 2; 3; 2 ;'。請在你的問題上付出更多的努力,並且我會在我的答案中付出更多的努力 – PascalVKooten

+0

@Dualinity對不起,我希望我的輸出看起來像這樣'[1] 2; 3; 2' –

+0

'輸入'你想修剪的'scorekm'的輸出。參見[here](http:// stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example/5963610#5963610)你是如何做到這一點的。還請顯示您嘗試的內容。謝謝! – Henrik

回答

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_character_。因此is.na()不起作用。