R 如何从循环后的几列中选择一行值?

R 如何从循环后的几列中选择一行值?,r,loops,min,R,Loops,Min,我的“信息”数据框中有: sci wd.sps1 wd.sps2 wd.genus wd.family 1 Acacia polyphylla 0.6185 0.6185 0.6335 0.69 2 Acacia polyphylla 0.6185 0.6185 0.6335 0.69 3 Acacia polyphylla 0.6185 0.6185 0.6335 0.69 4

我的“信息”数据框中有:

                   sci wd.sps1 wd.sps2 wd.genus wd.family
1    Acacia polyphylla  0.6185  0.6185   0.6335      0.69
2    Acacia polyphylla  0.6185  0.6185   0.6335      0.69
3    Acacia polyphylla  0.6185  0.6185   0.6335      0.69
4    Acacia polyphylla  0.6185  0.6185   0.6335      0.69
5      Acosmium nitens  0.8200  0.8200   0.8100      0.69
6      Acosmium nitens  0.8200  0.8200   0.8100      0.69
7           Aiouea sp.      NA      NA   0.3700      0.55
8           Aiouea sp.      NA      NA   0.3700      0.55
9  Allophylus robustus      NA      NA   0.3900      0.73
10 Allophylus robustus      NA      NA   0.3900      0.73
我使用这个循环来获取数据帧中出现的第一个wd.\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu


我使用了一个类似的循环和一个不同的数据帧,它工作了,但这次我不断得到一个错误,我不明白

利用
apply()的方法

info$wd同样


indx别让我们悬而未决。怎么了?对不起!这实际上不是一个错误,而是一条警告信息。。。尽管如此,它并没有将这些值放入一个新的列中。这是一种真正更明智的方法!这让我的R编码看起来真的很蹩脚哈哈。。。谢谢回复!
for (i in 1:nrow(info)) {
    if( all( is.na (info[i,c("wd.sps1","wd.sps2", "wd.genus", "wd.family")]))) {
        next()   
    }   
    info[i,]$wd = with(info[i,], c(wd.sps1, wd.sps2, wd.genus, 
      wd.family)[min( which( !is.na( c(wd.sps1, wd.sps2, wd.genus, wd.family))))]
    ) 
}
info$wd <- apply(info[,c("wd.sps1","wd.sps2", "wd.genus","wd.family")],
                 1,function(x)na.omit(x)[1])
indx <- which(!is.na(info[,-1]),arr.ind=T)
info$wd <- info[,-1][indx[!duplicated(indx[,1]),]]
info$wd
#[1] 0.6185 0.6185 0.6185 0.6185 0.8200 0.8200 0.3700 0.3700 0.3900 0.3900