2013-12-11 31 views
1

对于这个新手问题,我很抱歉。 我有这样R:which.min似乎不适用于我的数据框

l_tab$dis2_num$perc 
    Var1  dis  pol  dif 
1 1 0.79867550 0.2198391 0.57883635 
2 2 0.14569536 0.1983914 0.05269606 
3 3 0.05562914 0.5817694 0.52614030 

数据帧在哪里我想找到DIF的最小值。 我试试这个:

> min(l_tab$dis2_num$perc["dif"]) 
>[1] 0.05269606 

而且这是正确的,但我想也恢复行(在这种情况下2)

搜索这个东西,我有尝试这个办法:

Sorting and finding values in other data frames

建议函数which.min()。

出现的问题,当我尝试将其应用到我的数据

> which.min(l_tab$dis2_num$perc["dif"]) 
Erreur dans which.min(l_tab$dis2_num$perc["dif"]) : 
    the objet (list) can't be converted to type 'double' 

> typeof(l_tab$dis2_num$perc) 
[1] "list" 

我不明白为什么我的数据帧已经成为一个列表。

我也有尝试这个

> r = as.data.frame(r) 
> r 

    Var1  dis  pol  dif 
1 1 0.79867550 0.2198391 0.57883635 
2 2 0.14569536 0.1983914 0.05269606 
3 3 0.05562914 0.5817694 0.52614030 

> typeof(r) 
[1] "list" 

没有任何结果......

建议?

+0

这将是更见地问为什么“[”不是从内部提供的原子矢量一个列表。下一次看'str(l_tab $ dis2_num $ perc [“dif”])' –

+0

对不起,我还没有足够的水平甚至不知道什么是原子矢量... – Kaervas

+0

R中的两种矢量:列表和原子。 –

回答

5

data.frame是一个列表,[返回一个子列表。取而代之的是,提取列表项(矢量),你可以这样做:

which.min(l_tab$dis2_num$perc[["dif"]]) 

which.min(l_tab$dis2_num$perc$dif) 
相关问题