r - 重命名多个变量的命令
问题描述
重塑我的数据后,我有一个大型数据集,其列名如下所示:
1_abc
1_vwxyz
2_abc
2_vwxyz
我想将列名更改为如下所示:abc_1
vwxyz_1
abc_2
vwxyz_2
我的代码如下所示:
data <- tibble("1_abc" = c(1,2,3), "1_vwxyz" = c(10,11,12),
"2_abc" = c(1,1,2),"2_vwxyz" = c(9,11,15))
data_renamed <- data %>%
rename_(.dots=setNames(names(.), paste(substr(names(.), start=3, stop=nchar(names(.))),
substr(names(.), start=1, stop=1))))
我收到此错误:
Error in parse(text = x) : <text>:1:2: unexpected input
1: 1_
^
解决方案
这是基于 R 的解决方案。您首先将列名作为字符向量,将它们转换为二元素字符向量列表,颠倒每个字符向量的顺序,然后将它们与_
.
ll <- strsplit(colnames(data), pattern = "_")
# apply across this list of character vectors to reverse the order and concatenate
ll1 <- lapply(ll, function(x) paste(rev(x), collapse = "_"))
# unlist and assign them to the new data frame
data_renamed <- data
colnames(data_renamed) <- unlist(ll1)
# A tibble: 3 x 4
# abc_1 vwxyz_1 abc_2 vwxyz_2
# <dbl> <dbl> <dbl> <dbl>
# 1 1 10 1 9
# 2 2 11 1 11
# 3 3 12 2 15
推荐阅读
- java - 在 Javafx 中,mouseReleased 事件是否总是在 mouseClicked 之前发生?
- amazon-s3 - S3 启用对版本未知代码的版本控制影响
- c++ - 在 C++ 中访问 lambda 之外的 lambda 捕获初始化变量
- html - 使用一个 HTML 文件托管多个页面
- kubernetes - GKE 负载均衡器如何添加 SSL 证书
- android - 我如何在 android studio 中一次播放一首歌曲
- json - 带有 JSON 数据的 vb.net HttpWebRequest 失败但在 URL 中编码时有效
- html - 我可以在 HTML/CSS 中另一个元素的规则中更改另一个元素的规则吗?
- javascript - 如何在视频标签中监听 keydown 事件?
- iis - dotMemory 资源加载器找不到 MUI 文件。尝试分析本地 IIS 时