Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/79.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,我的df如下所示: a <- data_frame(keep=c("hello", "world"),drop = c("nice", "work")) a Source: local data frame [2 x 2] keep drop (chr) (chr) 1 hello nice 2 world work -(名称)中出错:一元运算符的参数无效 您可以使用one\u of查找列位置

我的df如下所示:

a <- data_frame(keep=c("hello", "world"),drop = c("nice", "work"))
a
Source: local data frame [2 x 2]
   keep  drop
  (chr) (chr)
1 hello  nice
2 world  work
-(名称)中出错:一元运算符的参数无效


您可以使用
one\u of
查找列位置,然后使用
-
将其删除,
选择(-one\u of(name))
,如果选中
?选择
,则示例中的drop变量部分会记录用法:

你可以简单地使用

a <- data_frame(keep=c("hello", "world"),drop = c("nice", "work"))
select(a, -starts_with('drop'))
#   Source: local data frame [2 x 1]
#
#   keep
#   (chr)
# 1 hello
# 2 world

a我们可以使用
select
setdiff

a %>%
    select_(setdiff(names(.), name))
# A tibble: 2 × 1
#   keep
#   <chr>
#1 hello
#2 world
a%>%
选择(setdiff(名称(.),名称))
#一个tibble:2×1
#保持
#   
#你好
#2世界

还有一些可能性:

name <- "drop"
a %>% `[<-`(name, value=NULL)
a %>% magrittr::inset(name,value=NULL)
a %>% purrr::modify_at(name,~NULL)
name%`[%magrittr::inset(名称,值=NULL)
a%>%purrr::modify_at(name,~NULL)

我只能先使用
解组
将数据解组,才能使这些解决方案起作用:

df <- df  %>%  ungroup  %>%  select(-hello)
df%ungroup%>%select(-hello)

请注意,您要删除的列名(hello)上没有引号。此外,要删除多个列,只需在hello之后放置一个
,然后添加第二列。

一个简单的问题-通常当列名为字符串时,我们使用
选择()
version right?当我尝试此操作时,Dot workselect不再是建议。您可以更新解决方案吗?
a %>%
    select_(setdiff(names(.), name))
# A tibble: 2 × 1
#   keep
#   <chr>
#1 hello
#2 world
name <- "drop"
a %>% `[<-`(name, value=NULL)
a %>% magrittr::inset(name,value=NULL)
a %>% purrr::modify_at(name,~NULL)
df <- df  %>%  ungroup  %>%  select(-hello)