2016-08-15 77 views
0

我正在嘗試在r中創建一個抗肺炎克雷伯菌屬爲'Resistant','Susceptible'或'Intermediate'部分的抗生素矩陣。然而,功能我目前使用:爲什麼我的函數在創建num(0)和NULL輸出?

Klebsiella.pneumoniae.rs.mat1 <-   
tapply(Klebsiella.pneumoniae.rs$resistant_phenotype, INDEX = 
list(Klebsiella.pneumoniae.rs$antibiotic), FUN = function(x) 
{ 
fracR = sum(x=='Resistant')/(nrow(x)) 

fracS = sum(x=='Susceptible')/(nrow(x)) 

fracI = sum(x=='Intermediate')/(nrow(x)) 

return(c(fracR, fracS, fracI)) 
}) 

的輸出:

amikacin      Numeric,0 
ampicillin     Numeric,0 
ampicillin/sulbactam   Numeric,0 
aztreonam      Numeric,0 
cefazolin      Numeric,0 
cefepime      Numeric,0 
cefotaxime     Numeric,0 
cefoxitin      Numeric,0 
ceftazidime     Numeric,0 
ceftriaxone     Numeric,0 
cefuroxime     NULL  
cephalothin     Numeric,0 
.... 

任何想法是怎麼回事? (原始數據是一列抗生素名稱,以及一列耐藥表型和其他一些列)

謝謝!

+1

是你的數據數字嗎?分享您正在應用此功能的數據。 – user5249203

回答

1

使用length而不是nrow。或者更好,只需使用meannrow返回行數,矢量中沒有行。

sum(iris$Species == "setosa")/nrow(iris$Species) 
#numeric(0) 

nrow(iris$Species) 
#NULL 

length(iris$Species) 
#[1] 150 

sum(iris$Species == "setosa")/length(iris$Species) 
#[1] 0.3333333 

mean(iris$Species == "setosa") 
#[1] 0.3333333 
+0

謝謝羅蘭!有效。 –

相關問題