Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/67.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
在dplyr中是否可以操作输入数据集?_R_Dplyr - Fatal编程技术网

在dplyr中是否可以操作输入数据集?

在dplyr中是否可以操作输入数据集?,r,dplyr,R,Dplyr,我正在使用dplyr对数据帧应用多个筛选和选择操作。是否可以直接更改输入对象中的数据 所以我想实现这样的目标: library(dplyr) mtcars %>% filter(mpg>20) %>% select(cyl) <- mtcars %>% filter(mpg>20) %>% transmute(cyl=8) mtcars[which(mtcars$mpg>20),"cyl"] <- 8 mtcars 库(dplyr) mt

我正在使用dplyr对数据帧应用多个筛选和选择操作。是否可以直接更改输入对象中的数据

所以我想实现这样的目标:

library(dplyr)
mtcars %>%
filter(mpg>20) %>%
select(cyl) <- mtcars %>%
filter(mpg>20) %>%
transmute(cyl=8)
mtcars[which(mtcars$mpg>20),"cyl"] <- 8
mtcars
库(dplyr)
mtcars%>%
过滤器(mpg>20)%>%
选择(气缸)%
过滤器(mpg>20)%>%
转化(循环=8)
显然,这会导致错误

在base R中,它将如下所示:

library(dplyr)
mtcars %>%
filter(mpg>20) %>%
select(cyl) <- mtcars %>%
filter(mpg>20) %>%
transmute(cyl=8)
mtcars[which(mtcars$mpg>20),"cyl"] <- 8
mtcars
mtcars[其中(mtcars$mpg>20),“cyl”]一种方式是:

mtcars %>%
  mutate(cyl = ifelse(mpg > 20, 8, cyl))

你不想变形,但想变异

您的示例可以这样编写:

mtcars2 <-  mtcars %>%
   filter(mpg>20) %>%
   select(cyl) %>% 
   filter(mpg>20) %>% 
   mutate(cyl=8)

你的意思是,像
mtcars%过滤器…
?显然,您的错误是由管道中间的箭头引起的。请注意,如果您修改数据集(同名),则必须在其上工作以获得原始数据重新加载。最好使用一个临时名称。如果我运行:mtcars%filter(mpg>20)%%>%transmute(cyl=8)mtcars,则只返回气缸。我想用更改的柱面获取整个数据帧。这是因为您希望
变异
,而不是
转化
。当心@Elin说的话@snoram您完全正确,但这是因为给定的示例首先存在缺陷(仅选择
cyl
后,在
mpg
上进行过滤)。请把这个答案看成是教育性的。我将添加一个注释。对不起,实际问题是,我希望更改mtcars数据帧,而不是创建新对象。@Kriselack然后从我的答案中删除
mtcars2
2
。但是,如果您真的在谈论
mtcars
dataframe,并且它不仅仅是自定义数据帧的一个示例,那么就不应该这样做。