R 说明行中最后一个非NA值是否存在于相应行中

R 说明行中最后一个非NA值是否存在于相应行中,r,if-statement,dplyr,R,If Statement,Dplyr,我有一个数据框,如下所示: Col1 Col2 Col3 Col4 Col5 Col6 Col7 A B C E F NA J L NA P NA NA Z M P NA M NA H J

我有一个数据框,如下所示:

Col1    Col2    Col3    Col4     Col5    Col6    Col7
   A       B       C                E       F      NA
   J               L      NA        P      NA      NA
   Z       M               P       NA       M      NA
   H               J      NA       NA      NA      NA
   A       B               D        B      NA      NA
如何插入一个新列,说明该行中是否存在最后一个非NA值?我希望最终输出如下所示:

Col1    Col2    Col3    Col4     Col5    Col6    Col7    Exist?
   A       B       C                E       F      NA        No
   J               L      NA       NA      NA      NA        No
   Z       M               P        M      NA      NA       Yes
   H               J      NA       NA      NA      NA        No
   A       B               D        B      NA      NA       Yes

我们可以使用
apply
在行上循环(
MARGIN=1
),删除NA元素(
x[!is.NA(x)]
),查找是否存在任何重复(
anyDuplicated
),转换为逻辑向量,并通过将逻辑索引转换为数字索引将其更改为“是”、“否”

df1$Exist <- apply(df1, 1, FUN = function(x) 
            c("No", "Yes")[(anyDuplicated(x[!is.na(x) & x != "" ])!=0) +1])
df1$Exist
#[1] "No"  "No"  "Yes" "No"  "Yes"

df1$Exist谢谢。我意识到,在我的数据集中间也有NA和空白,这是搞乱的。有没有办法用这个公式来解释呢?我修改了question@NickKnauer您可以更改
!is.na(x)
!is.na(x)&x!=“
更新了对我来说仍然不起作用的帖子,尽管它不存在,但一切都是肯定的。我将提供一个新的数据集。给我一个sec@NickKnauer我试过使用你的数据集,它给了我完全相同的输出。请检查您是否有空格(
)或空格(