Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 在分析中将行名称引用为数字(盖革包)_R_Phylogeny - Fatal编程技术网

R 在分析中将行名称引用为数字(盖革包)

R 在分析中将行名称引用为数字(盖革包),r,phylogeny,R,Phylogeny,我试图在R中的盖革包中实现tip.disparsion函数 我的数据: 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" "1

我试图在R中的盖革包中实现tip.disparsion函数

我的数据:

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格式)

希望这更清楚
谢谢

我相信文档中有线索(
?检查名称
):

如果希望程序返回包含在数据框中但不在树中的分类群名称,则需要将相应的名称指定为数据框的行名称,或在
data.names
参数中单独指定它们。请注意,数据帧的默认行名称是与行号等效的字符,这正是您在上面看到的

根据上述附加信息编辑

R无法猜测(或不想猜测)这些名称是否包含在数据框的
系列
元素中。尝试:

check.names(traitdata,tree,data.names=as.character(traitdata$Family))
从长远来看,最好是:

rownames(traitdata) <- as.character(traitdata$Family)
traitdata <- subset(traitdata,-Family)
check.names(traitdata,tree)
您可以看到,分类单元名称作为行名称包含,而不是作为数据框本身中的列包含


PS它的界面不如StackOverflow好,但是
R-sig上有一个非常友好和活跃的R-for-phylogeny邮件列表-phylo@r-projects.org

想显示一段数据吗,比如说通过
head(foo)
在哪里
foo
是您的数据框?我们需要更多的上下文,请看。。。此外,对于这个列表中的其他人来说,您正在处理系统发育数据可能并不明显(尽管您提到了
geiger
包,确实得到了一些要点),并且您的“数据”可能位于系统发育树对象中(
phylo
,记录在
?ape::read.tree
)尼克:请使用
dput
并将答案嵌入上述问题的编辑版本,而不是评论中。(如果你的树真的很大,那么你可能需要向我们展示一个子集)欢迎光临,尼克!加文建议使用
head(foo)
是有原因的。我们需要看到的不是值本身,而是数据帧的总体结构。请使用
head(foo)
dput(head(foo))
再试一次,并将结果放在您的问题中,而不是评论中。效果完美,正是我想要的,非常感谢!
rownames(traitdata) <- as.character(traitdata$Family)
traitdata <- subset(traitdata,-Family)
check.names(traitdata,tree)
data(geospiza)
geospiza.data