2011-08-24 48 views
0

我試圖開展tip.disparity功能蓋革包河參照排在分析的名稱作爲數字(蓋革包)

我的數據:

Family Length Wing Tail 
Alced 2.21416 1.88129 1.66744 
Brachypt 2.36734 2.02373 2.03335 
Bucco 2.23563 1.91364 1.80675 

當我使用函數「name.check」從我的數據查詢的名稱相匹配那些在我的樹,它返回

$data.not.tree 
[1] "1" "10" "11" "12" "2" etc 

顯示,它是由數指的名字。我用盡轉換爲特徵向量等

我試着

data.names=NULL 

運行它我在尋找讓這個包的名稱以那些在我的樹匹配只需編輯我的數據幀(樹newick格式)

希望這是更清晰 感謝

+1

小心顯示數據片斷,例如通過'head(foo)'說,其中'foo'是您的數據框? –

+1

我們需要更多的上下文:請參閱http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example ...此外,對於這個列表中的其他人,您可能並不清楚您正在使用系統發育數據(雖然您可以獲得提及'geiger'軟件包的要點),並且您的'數據'可能位於系統發育樹對象('phylo' ,記錄在'?ape :: read.tree'中)。 –

+0

尼克:請使用'dput'並將答案嵌入上述問題的編輯版本中,而不是在評論中。 (如果你的樹真的很大,那麼你可能需要向我們展示一個子集) –

回答

2

相信線索是文檔(?check.names)中:

data.names: names of the tips in the order of the data; if this is not 
      given, names will be taken from the names or rownames of the 
      object data 

如果您希望程序返回包含在數據框中但未出現在樹中的分類羣的名稱,則需要將相應的名稱指定爲數據框的行名,或指定它們分別在data.names的論點。需要注意的是數據幀的默認行名稱是字符相當於行號的,你看到的上面到底是什麼......基於以上信息,

編輯

R可不要猜測(或不想)名稱包含在數據框的Family元素中。嘗試:

check.names(traitdata,tree,data.names=as.character(traitdata$Family)) 

,從長遠來看可能會更好做:

rownames(traitdata) <- as.character(traitdata$Family) 
traitdata <- subset(traitdata,-Family) 
check.names(traitdata,tree) 

因爲你不希望有包含在數據集中的性狀Family - 這是一個標識符,而不是一個特質...

如果你看一下在包給出的示例數據的結構:

data(geospiza) 
geospiza.data 

你可以看到分類羣的名稱被包括作爲行名稱,而不是在數據幀本身列...

PS它作爲StackOverflow的不是漂亮的界面,但有一個非常友好和活性的R -for-phylogeny郵件列表[email protected] ...

+0

完美地工作,正是我所期待的,非常感謝你! –

+0

如果你喜歡它,然後點擊「接受」... –

相關問題