r - 如何删除具有相同名称的所有列(tidyverse 或 base R)?
问题描述
我的数据集有几个同名的列,我想删除它们。
不幸的是,select(data, -Offender)
它不起作用 ( Error: Can't bind data because some arguments have the same name
),但我也不能用它janitor::clean_names
来克服它——我需要保持列名不变。
我尝试使用 base R ( df1 <- subset(df1, select = -c(Offender))
),但它随后重命名了其他 Offenders。#
解决方案
这是一个基本解决方案。
# Create data frame
df <- data.frame(runif(10), runif(10), runif(10), runif(10))
names(df) <- c("foo", "bar", "bar", "bar")
# Examine data
print(df)
#> foo bar bar bar
#> 1 0.4126322 0.1436917 0.4870304 0.80514914
#> 2 0.1642798 0.7948858 0.7741611 0.64353516
#> 3 0.6485090 0.6607900 0.9260459 0.75226835
#> 4 0.5254531 0.5535233 0.5746025 0.07131740
#> 5 0.1367792 0.4830001 0.4947695 0.46050685
#> 6 0.9517484 0.5750567 0.2231635 0.20050668
#> 7 0.9535626 0.1362335 0.5429668 0.07581875
#> 8 0.6679136 0.5017095 0.3106441 0.02235911
#> 9 0.4489072 0.3811038 0.1922099 0.07851105
#> 10 0.7724686 0.1284880 0.4240226 0.44462081
# Remove all columns called "bar"
df[, "bar" == names(df)] <- NULL
# Examine data again
print(df)
#> foo
#> 1 0.4126322
#> 2 0.1642798
#> 3 0.6485090
#> 4 0.5254531
#> 5 0.1367792
#> 6 0.9517484
#> 7 0.9535626
#> 8 0.6679136
#> 9 0.4489072
#> 10 0.7724686
由reprex 包(v0.3.0)于 2019 年 6 月 24 日创建
推荐阅读
- google-cloud-platform - 运行terraform申请GCP时连接被拒绝
- javascript - 保存本地存储 JavaScript 检查
- python - 如何部署训练有素的 OpenAI 健身房模型以将股票交易作为应用程序或部署到 backtrader 等回测框架中以预测买入或卖出?
- ios - 设置 UIBarButtonItem.appearance() 在 iOS 15 上不起作用
- java - 无法为轴 1.4 的 wsdl 生成代码,尽管在 SoapUI 导入时已成功使用
- javascript - 有没有办法将以下两个 Observable 组合成角度对象数组?
- sql - SQL 对数据库中的用户按收到意见最多的排序
- sql - 如何根据时间戳列仅选择在过去 3 个月内仅记录一次的这些 ID?
- android - Android Studio Java 从字符串问题尝试 JSONArray
- linux - shell脚本获取依赖于端口号的输出,获取服务名称和服务状态?