首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >R使用带有可变列标题的distinct()

R使用带有可变列标题的distinct()
EN

Stack Overflow用户
提问于 2020-09-24 02:08:02
回答 2查看 85关注 0票数 0

假设我有一个数据帧:

代码语言:javascript
运行
AI代码解释
复制
> my.df <- data.frame(uid=c(1,1,3),somevalue=c("x","y","z"))
> my.df
   uid somevalue
1    1         x
2    1         y
3    3         z

我想要:

代码语言:javascript
运行
AI代码解释
复制
  uid somevalue
1   1         y
2   3         z

我不能用

代码语言:javascript
运行
AI代码解释
复制
distinct(my.df, uid, .keep_all= TRUE)

因为变量名"uid"可能会更改。但是,我将变量名存储为字符串。

所以我得到了

代码语言:javascript
运行
AI代码解释
复制
> iKey <- "uid"
> distinct(my.df, iKey, .keep_all= TRUE)
  uid somevalue
1   1         x
2   1         y
3   3         z
Warning message:
Trying to compute distinct() for variables not found in the data:
- `iKey`
This is an error, but only a warning is raised for compatibility reasons.
The operation will return the input unchanged. 

如何才能让distinct()使用iKey的值,而不是从字面上理解它?

EN

回答 2

Stack Overflow用户

发布于 2020-09-24 02:10:44

我们可以使用.data代词:

代码语言:javascript
运行
AI代码解释
复制
library(dplyr)
distinct(my.df, .data[[iKey]], .keep_all= TRUE)

#  uid somevalue
#1   1         x
#2   3         z

或者使用symiKey转换为symbol并对其求值为!!

代码语言:javascript
运行
AI代码解释
复制
distinct(my.df, !!sym(iKey), .keep_all= TRUE)
票数 1
EN

Stack Overflow用户

发布于 2020-09-24 03:27:53

tidyselect across/all_of习惯用法也适用:

代码语言:javascript
运行
AI代码解释
复制
distinct(my.df, across(all_of(iKey)), .keep_all= TRUE)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64038559

复制
相关文章

相似问题

领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文