r - 在R中的每个元素列表中添加前缀

标签 r list data.table tidyverse

我有很多使用lapply和vroom包读取的csv文件(它有18个文件,每个文件中有数百万行)

library(vroom)
filelist <- list.files(pattern = "*.csv")

dput(文件列表)
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 vector 化的,因此非常有效

关于r - 在R中的每个元素列表中添加前缀,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58134546/

相关文章:

r - 为什么在尝试对自相关建模时会出现错误,即使完全遵循 Pinheiro 和 Bates (2009) 中的这个示例?

R函数solve.QP错误 "constraints are inconsistent, no solution!"

python - 查找哪个对象不在列表中,但可能有重复项...棘手

C++ 静态初始化 map<float, float[3]>

r - geom_polygon 的渐变填充

R 中将时间四舍五入到最接近的小时

R data.table 函数无法识别已指定的参数

r - 使用 data.table 进行内存分析

java - List<Long> 到 int 有损转换

r - R 中数据表中状态变量的跟踪时间