Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 为数字指定的特定行变异TIBLE_R_Dataframe_Dplyr - Fatal编程技术网

R 为数字指定的特定行变异TIBLE

R 为数字指定的特定行变异TIBLE,r,dataframe,dplyr,R,Dataframe,Dplyr,试图通过行号找到dplyrcanonical变异atible的方法。 我讨论了许多堆栈溢出问题和GH问题,如行数,如果其他,case\u when,但仍不清楚实现以下目标的正确方法是什么 最简单的例子:有一个data.frame,我想通过提供行索引(这里是第2行和第4行),将它的一列更新为特定行的特定值(这里是NA) 要更新的列不必参数化,只需行号即可。 低于基准R,以实现以下目标 DF=data.frame(x=5:1) idx=c(2升,4升) DF[idx,x”]=NA_整数_ DF #x

试图通过行号找到
dplyr
canonical
变异
a
tible
的方法。
我讨论了许多堆栈溢出问题和GH问题,如
行数
如果其他
case\u when
,但仍不清楚实现以下目标的正确方法是什么

最简单的例子:有一个data.frame,我想通过提供行索引(这里是第2行和第4行),将它的一列更新为特定行的特定值(这里是
NA
) 要更新的列不必参数化,只需行号即可。
低于基准R,以实现以下目标

DF=data.frame(x=5:1)
idx=c(2升,4升)
DF[idx,x”]=NA_整数_
DF
#x
#1  5
#2 NA
#3  3
#4NA
#5  1

根据@camille反馈和其他评论者的同意,最整洁的代码是
变异(x=ifelse(行数()%in%idx,NA\u integer,x))


顺便说一句,最好使用
是否可以使用
DF%>%mutate(x=replace(x,idx,NA))
此外,还有一个hacky选项是
DF%>%mutate(x='is.NA我想说的是@akrun对
replace
的建议没有错,只是因为它是一个基本函数,应该仍然可以工作。您还可以使用
mutate(x=ifelse(row\u number()%in%idx,NA\u integer\ux,x))之类的东西
只在那些行号处替换x有时确实觉得在
函数时应该有一个
变异,不是吗?我不知道是否有一个。@camille的
if_else
解决方案正是我要推荐的;我想它已经接近canonical了。哇@akrun!我需要一个开放的解决方案-这是我的GIF。太棒了!我在这里学到了一些新的东西,真诚地感谢你。我已经修改了我的评论,因为它仍然在5分钟的窗口内。那时我肯定会推荐base-R解决方案,我估计RStudio/Tidyverse的员工也会这么做!
尽管你的答案是实现这一目标最简洁的方法我在问题中问过,我认为不应该推荐。基本R方式也适用于tibbles,在我看来应该是首选。接受答案,因为问题是关于tidyverse方式。它增加了额外的内存开销,如我最近的幻灯片所示,因此比基本R方式有更大的内存需求:
library(dplyr)
df <- data.frame(x = 5:1)
idx <- c(2L, 4L)
df %>% mutate(x = ifelse(row_number() %in% idx, NA_integer_, x))

#   x
#1  5
#2 NA
#3  3
#4 NA
#5  1