按行选择行中的最后一个值

jsl*_*che 8 r dataframe

我有一个数据框,其中每一行是不同长度值的向量.我想在每一行中创建一个最后一个真值的向量.

这是一个示例数据框:

df <- read.table(tc <- textConnection("
   var1    var2    var3    var4
     1       2       NA      NA
     4       4       NA      6
     2       NA      3       NA                
     4       4       4       4              
     1       NA      NA      NA"), header = TRUE); close(tc)
Run Code Online (Sandbox Code Playgroud)

因此,我想要的值向量c(2,6,3,4,1).

我只是无法弄清楚如何让R来识别最后一个值.

任何帮助表示赞赏!

And*_*rie 16

通过结合三件事来做到这一点:

  • 用.识别NAis.na
  • 使用向量查找向量中的最后一个值 tail
  • 使用apply在此功能适用于每一行data.frame

代码:

lastValue <- function(x)   tail(x[!is.na(x)], 1)

apply(df, 1, lastValue)
[1] 2 6 3 4 1
Run Code Online (Sandbox Code Playgroud)