r - 为R中的每个元素列表添加前缀
问题描述
我有许多使用 lapply & vroom 包读取的 csv 文件(它有 18 个文件,每个文件中有数百万行)
library(vroom)
filelist <- list.files(pattern = "*.csv")
输入(文件列表)
c("UPW_119_1.csv", "UPW_119_2.csv", "UPW_119_3.csv")
files <- lapply(filelist, FUN=vroom)
假设下面是我的列表的样子:
files <- list(no1= c("1","2","3","4","5"), no2= c(1:3),no3 = c("190301010141","190301010141","190301010143","19030101014","190301010145"))
我想为列表中的每个元素添加“91”前缀,后跟它们在文件列表中的文件名
我尝试过这样的事情,但它不正确
mytry :
files2 <- paste0("91", files, fileslist[i]) #Adding file name
所需输出
## List of 3
## $ f1 : int [1:5] 911_UPW_119_1 912_UPW_119_1 913_UPW_119_1 914_UPW_119_1 915_UPW_119_1
## $ no2: int [1:3] 911_UPW_119_2 912_UPW_119_2 913_UPW_119_2
## $ no3: int [1:5] "9190301010141_UPW_119_3","91190301010141_UPW_119_3","91190301010143_UPW_119_3","9119030101014_UPW_119_3","91190301010145_UPW_119_3")
然后我想写这些 csv 文件
所以总的来说,读取 18 个 csv 文件,按照上面的方式进行修改,添加“91”(静态)和文件名(动态)然后写入 18 个 csv 文件
我研究了很多,尝试了 lapply 和 list 功能等,但没有帮助!
解决方案
您可以使用 lapply:
filelist <- c("UPW_119_1.csv", "UPW_119_2.csv", "UPW_119_3.csv")
files <- list(no1= c("1","2","3","4","5"), no2= c(1:3),no3 = c("190301010141","190301010141","190301010143","19030101014","190301010145"))
lapply(1:length(files), function(k) paste(91, files[[k]], sub(".csv", "", filelist[[k]], fixed = TRUE), sep = "_"))
它是矢量化的,lapply
因此非常有效
推荐阅读
- docker - Docker compose 允许服务通过主机名访问主机上的数据库
- airflow - 触发规则 none_skipped 未按预期工作
- sql - SELECT INTO 语句不能包含将值分配给变量的 SELECT 语句
- nativescript - NativeScript android在通知上播放声音
- java - 等式方法中浮点/双实例变量的等式比较是否准确?
- c++ - 是否存在围绕类添加方法的最薄包装器之类的东西?
- elasticsearch - 没有 docID 的术语查找
- c# - 在 RabbitMq 中使用 publishAsync 时出现内部服务器错误
- node.js - 无法使用 nock 移除拦截器
- lotus-notes - 如何为日历/日历事件创建通知 - Domino API