本文介绍了dplyr更新data.frame中的单元格的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

df <-data.frame(x=c(1:5),y=c(letters[1:5]))

假设我要修改最后一行,

Let's say I want to modify the last row,

update.row<-filter(df,x==5) %>% mutate(y="R")

如何将这一行更新到data.frame中?我发现,尽管有一种奇怪的方法,但唯一的方法是反连接并附加结果.

How do I update this row into the data.frame ?The only way, I found albeit a strange way is to do an anti-join and append the results.

df <-anti_join(df,update.row,by="x") %>%
     bind_rows(update.row)

但是,这似乎是完成一项简单任务的一种非常微不足道的方法.任何想法都非常感谢...

However, it seems like a very inelegant way to achieve a simple task.Any ideas are much appreciated...

推荐答案

如果您坚持使用 dplyr ,也许

df <-data.frame(x=c(1:5),y=c(letters[1:5]))

library(dplyr)
df %>%
    mutate(y = as.character(y)) %>%
    mutate(y = ifelse(row_number()==n(), "R", y))

#  x y
#1 1 a
#2 2 b
#3 3 c
#4 4 d
#5 5 R

这篇关于dplyr更新data.frame中的单元格的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-27 13:45