r - 如何在列表中的每个数据帧中的不同位置重命名 NA-Column
问题描述
我有一个包含很多数据框的列表。
列名称如下所示:
[1] "TIMESTAMP" "CLOSE"
[3] "HIGH" "LOW"
[5] "OPEN" NA
[7] "daily_return"
一栏,根本没有名字。并且列的顺序在每个元素中都不同。这意味着“NA”列有时在开头,有时在结尾,有时在中间。
我的目标是给它一个名字,然后对它们重新排序,以便列表的每个元素以相同的顺序具有相同的列名。
到目前为止我尝试过的(仅使 NA 列消失):
lapply(price_list_clean, FUN = function(X){X[c("TIMESTAMP",
"OPEN",
"HIGH",
"LOW",
"CLOSE",
"daily_return",
NA)]})
编辑
我最后一次识别 NA 列并为其命名:
for( i in 1:length(price_list_clean)){
for(f in 1:ncol(price_list_clean[[i]])){
if(is.na(colnames(price_list_clean[[i]])[f])){
names(price_list_clean[[i]])[f] <- "RIC_Updated"
}
}
print(i)
}
也许有人有一个更优雅的想法?
有什么建议么?
亲切的问候
解决方案
我们创建了一个自定义列名顺序的向量,用 循环遍历list
data.frames map
,用于rename_with
更改“NA”的列名(假设每个 data.frame 只有一个),并且select
列的顺序为名称的自定义顺序向量
library(purrr)
library(dplyr)
correct_order <- c("TIMESTAMP","OPEN","HIGH","LOW","CLOSE",
"daily_return","new_name")
price_list_clean <- map(price_list_clean, ~
.x %>%
rename_with(~ 'new_name', matches("^NA$")) %>%
select(all_of(correct_order)))
推荐阅读
- python - 在 Google Cloud 中预处理数据以进行预测(Cloud Functions 不支持 Tensorflow)
- javascript - Selectbox 中的 ListItem 预选(选中)
- html - Chrome 输入字段不显示 Windows 数字小键盘(tabtip)
- javascript - 如何获取字符串中的符号数
- python - 如何绘制每列都是不同函数的 2D numpy 数组?
- hive - 如何为 Hive 查询生成随机数_only once_?
- javascript - 在脚本加载出现 CORS/安全问题之前将 div 属性更改为随机字符串我相信
- ruby - 如何检查 YAML 字符串是否排除任何有用信息
- angular - 如何获取动态生成的组件的引用
- jquery - 如果单击复选框,则始终选中表格列 JQuery