r - 获取文件名并将其分配为函数中的列名
问题描述
我有几个csv
文件都具有这种格式:
xyz site
2.1 tex1
15.67 tex2
32.111 ny31
我想将这些文件导入 R。像这样:
df_list <- list.files('./usa_data')
dfs <- lapply(df_list, import_function)
我想要import_function
做的是获取 csv 文件名称的一部分并将其粘贴,而不是第一个列名 ( xyz
)。我的 csv 名称具有以下格式:
usa_low_dollars_270_1.csv
usa_high_euros_250_2.csv
usa_low_gbp_240_1.csv
我想提取货币(名称的第三个组成部分),将它与“中位数”这个词结合起来,然后像这样重命名第一列:
dollars_median site
2.1 tex1
15.67 tex2
32.111 ny31
# or
euros_median site
2.1 tex1
15.67 tex2
32.111 ny31
# etc
解决方案
您可以lapply
沿使用的索引df_list
使用,seq_along
而不是在向量本身上使用。
从那里,您可以df_list
使用索引进行子集化,并使用strsplit
.
df_list <- list.files()
df_list
[1] "usa_high_euros_250_2.csv" "usa_low_dollars_270_1.csv" "usa_low_gbp_240_1.csv"
lapply(seq_along(df_list), function(x){
data <- read.csv(df_list[x])
names(data)[1] <- str_c(strsplit(df_list[x],"_")[[1]][3],"_median")
data
})
[[1]]
euros_median site
1 2.100 tex1
2 15.670 tex2
3 32.111 ny31
[[2]]
dollars_median site
1 2.100 tex1
2 15.670 tex2
3 32.111 ny31
[[3]]
gbp_median site
1 2.100 tex1
2 15.670 tex2
3 32.111 ny31
推荐阅读
- sql - 在参数化表中插入数据
- c# - 检测 SQL Server 表上的插入并执行 C# 代码
- git - git 分支名称自动补全
- java - Spring 集成和 Spring Cloud Stream
- sql - 如何在 CASE 语句中分别获取一个或多个条件的数据
- php - Yii有些用户无法登录
- c# - 访问继承的泛型类的属性
- jestjs - 电极:在构建时将 Jest 测试文件排除在 /lib 之外
- c# - Xamarin.Forms Azure.Devops 构建失败
- python - 为什么在 sklearn GridsearchCV SVM 中使用 class_weight 时会出错?