提取部分文件名并将其添加到数据框列表中
Extract part of file name and add it into a dataframe list
我有一个数据框列表,如下所示:
我有这样的文件名:
testlist
"Folder1/AT0ILL10000700500dymax.1-1-1990.31-12-2011"
"Folder1/CH0001A0000700100dymax.1-1-1992.31-12-2007"
"Folder1/CH0005A0000700500dymax.1-1-1992.31-12-2011"
我用这个命令读取数据。
data_list = lapply(testlist, read.table)
现在我想提取文件名的一部分并将其作为 V6 添加到数据框中。这些是我要提取的部分。
AT0ILL1
CH0001A
CH0005A
所以这将是 9-15 个字母,在第一个数据帧中 [1] 只包含 6 次 "AT0ILL1" 在最后一个新列中,[[2]] 只会在 V6 中为 "CH0001A",在 [[3]] 中仅 "CH0005A"。
例如,我可以只用一个文件来做到这一点:
substr(name, 9, 15)
但是我如何处理所有文件(实际上我有超过 1000 个文件)?
这是我的测试框架的代码。
V1= c("20000608", "20000609", "20000610", "20000611", "20000612", "20000613")
V2= seq(5, 30, length=6)
V3= rep(c(-1,0,1), times=2)
V4= seq(10, 60, length=6)
V5= rep(c(1,-1,0), times=2)
testframe1 = data.frame(V1, V2, V3, V4, V5)
x1= c("20030608", "20100609", "20060610", "20040611", "20009612", "20002613")
x2= seq(4, 80, length=6)
x3= rep(c(0,-1,1), times=2)
x4= seq(3, 60, length=6)
x5= rep(c(-1,1,0), times=2)
testframe2 = data.frame(V1=x1, V2=x2, V3=x3, V4=x4, V5=x5)
a1= c("20030602", "20100606", "20060610", "20040511", "20007612", "20002624")
a2= seq(7, 133, length=6)
a3= rep(c(-1,0,1), times=2)
a4= seq(9, 47, length=6)
a5= rep(c(1,0,-1), times=2)
testframe3 = data.frame(V1=a1, V2=a2, V3=a3, V4=a4, V5=a5)
list = list(testframe1, testframe2, testframe3)
简单的 for
解决方案怎么样?
# I assume that:
# - testlist is a vector that contains filenames
# - df.list is a list of dataframes (in the example named list)
for(i in 1:3){
df.list[[i]]$V6 <- substr(testlist[i], 9, 15)
}
我有一个数据框列表,如下所示:
我有这样的文件名:
testlist
"Folder1/AT0ILL10000700500dymax.1-1-1990.31-12-2011"
"Folder1/CH0001A0000700100dymax.1-1-1992.31-12-2007"
"Folder1/CH0005A0000700500dymax.1-1-1992.31-12-2011"
我用这个命令读取数据。
data_list = lapply(testlist, read.table)
现在我想提取文件名的一部分并将其作为 V6 添加到数据框中。这些是我要提取的部分。
AT0ILL1
CH0001A
CH0005A
所以这将是 9-15 个字母,在第一个数据帧中 [1] 只包含 6 次 "AT0ILL1" 在最后一个新列中,[[2]] 只会在 V6 中为 "CH0001A",在 [[3]] 中仅 "CH0005A"。
例如,我可以只用一个文件来做到这一点:
substr(name, 9, 15)
但是我如何处理所有文件(实际上我有超过 1000 个文件)?
这是我的测试框架的代码。
V1= c("20000608", "20000609", "20000610", "20000611", "20000612", "20000613")
V2= seq(5, 30, length=6)
V3= rep(c(-1,0,1), times=2)
V4= seq(10, 60, length=6)
V5= rep(c(1,-1,0), times=2)
testframe1 = data.frame(V1, V2, V3, V4, V5)
x1= c("20030608", "20100609", "20060610", "20040611", "20009612", "20002613")
x2= seq(4, 80, length=6)
x3= rep(c(0,-1,1), times=2)
x4= seq(3, 60, length=6)
x5= rep(c(-1,1,0), times=2)
testframe2 = data.frame(V1=x1, V2=x2, V3=x3, V4=x4, V5=x5)
a1= c("20030602", "20100606", "20060610", "20040511", "20007612", "20002624")
a2= seq(7, 133, length=6)
a3= rep(c(-1,0,1), times=2)
a4= seq(9, 47, length=6)
a5= rep(c(1,0,-1), times=2)
testframe3 = data.frame(V1=a1, V2=a2, V3=a3, V4=a4, V5=a5)
list = list(testframe1, testframe2, testframe3)
简单的 for
解决方案怎么样?
# I assume that:
# - testlist is a vector that contains filenames
# - df.list is a list of dataframes (in the example named list)
for(i in 1:3){
df.list[[i]]$V6 <- substr(testlist[i], 9, 15)
}