我的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
Run Code Online (Sandbox Code Playgroud)
我可以使用a %>% select(-drop)
删除列没有问题.但是,如果我想将变量传递给present drop
列,则返回错误.
name <- "drop"
a %>% select(-(name))
Error in -(name) : invalid argument to unary operator
Run Code Online (Sandbox Code Playgroud)
Psi*_*dom 38
您可以使用one_of
查找列位置然后使用-
它来删除它select(-one_of(name))
,如果您检查?select
,则使用情况记录在示例中的Drop变量部分中:
name <- "drop"
a %>% select(-one_of(name))
# A tibble: 2 × 1
# keep
# <chr>
#1 hello
#2 world
Run Code Online (Sandbox Code Playgroud)
或者select_
,如果-
要删除多个列,则需要粘贴列名以删除它们并将粘贴的列名称传递给.dots
参数:
name <- "drop"
a %>% select_(.dots = paste("-", name))
# A tibble: 2 × 1
# keep
# <chr>
#1 hello
#2 world
Run Code Online (Sandbox Code Playgroud)
你可以简单地使用
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
Run Code Online (Sandbox Code Playgroud)
您还必须搜索一些以前编写的解决方案.请阅读此处的文档按名称选择/重命名变量.DPLYR
我希望能为你完成这项工作:) @Psidom thanx更新你的答案..但是我也会请求upvoters投票给我,因为我最近成为了一个活跃的用户,但我仍然要获得stackoverflow的基本权限.