Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在R forloop中添加Id列并填充CSV名称_R_Loops_Csv - Fatal编程技术网

在R forloop中添加Id列并填充CSV名称

在R forloop中添加Id列并填充CSV名称,r,loops,csv,R,Loops,Csv,我有很多CSV,我想在其中创建一个Id列,并用CSV的名称填充该Id列 这是当前B1.csv的一个示例: Date_Time Temp 5/5/2020 11:00 89 5/5/2020 11:30 97 5/5/2020 12:00 108 我想看看: Id Date_Time Temp B1 5/5/2020 11:00 89 B1 5/5/2020 11:30

我有很多CSV,我想在其中创建一个Id列,并用CSV的名称填充该Id列

这是当前B1.csv的一个示例:

 Date_Time         Temp
5/5/2020 11:00       89
5/5/2020 11:30       97
5/5/2020 12:00       108
我想看看:

 Id         Date_Time         Temp
 B1      5/5/2020 11:00       89
 B1      5/5/2020 11:30       97
 B1      5/5/2020 12:00       108
代码:

temp=list.files(“C:\\Users\\kujld016\\**\\r”,
pattern=“*.csv”,full.name=T)
myfiles=lappy(temp,read.csv)
用于(我的文件){
myfiles[[i]]$Id已更新

library(readr)
library(dplyr)

infolder  <- "C:\\Users\\***\\r"
outfolder <- "C:\\Users\\***\\out"

setwd(infolder)

csvfiles <- dir(path = infolder, pattern = "\\.csv$")

for (i in csvfiles) {
  #tmpfile <- read_csv(i)
  #tmpfile$filename <- i
  #write_csv(tmpfile, file.path(outfolder, i)
  print(file.path(outfolder, i))
}
库(readr)
图书馆(dplyr)

infolder
myfiles[[i]]$Id这很有效!但包含了整个文件路径。我需要在该文件路径中指定CSV名称,并将其删除。谢谢您可以删除路径-
file\u name=sub(“.*/”,“”,temp)
中最后一个
/
之前的所有内容,然后使用
文件名[i]
。使用substr(温度[I],75,77),我能够更接近我需要的东西。但是,我的CSV编号为B1-B100,因此子字符串规格因数字而异。如果您发布一些文件路径示例,则我可以更有效地提供帮助。另一个选项是使用新的
list.files
调用来补充现有的调用,可能是
file\u names=list.files(“C:\\Users\\kujld016\\**\\r”,pattern=“*.csv”,full.name=FALSE)
M.Viking,目前我想将所有csv分开。只要我弄清楚Id列,代码中的“write.csv”部分就可以满足我的需要。您想覆盖原始文件..还是将它们放在单独的文件夹..或者更改名称,、filename.csv->filename\u mod.csv…我已将write.csv路径设置为将csv文件放在一个空文件夹中,这样原始文件就不会被更改。csv文件似乎会填充每个csv,但当我运行循环时,我会收到一个错误,说明没有此类文件或目录。我认为问题在于我正在工作目录之外提取和保存文件。
library(readr)
library(dplyr)

infolder  <- "C:\\Users\\***\\r"
outfolder <- "C:\\Users\\***\\out"

setwd(infolder)

csvfiles <- dir(path = infolder, pattern = "\\.csv$")

for (i in csvfiles) {
  #tmpfile <- read_csv(i)
  #tmpfile$filename <- i
  #write_csv(tmpfile, file.path(outfolder, i)
  print(file.path(outfolder, i))
}