2017-11-28 3 views
1

私はこのようになりますデータフレームのリストを持っていますこのコマンドでデータ。抽出部とデータフレームのリストにそれを追加

data_list = lapply(testlist, read.table) 

ここで、ファイル名の一部を抽出し、V6としてデータフレームに追加したいとします。これらは私が抽出したい部分です。

AT0ILL1 
CH0001A 
CH0005A 

は、これは9-15文字になり、そして最初のデータフレームで[1]のみ最後の新しい列で6回「AT0ILL1」は、[[2]]が唯一の「CH0001A」だろう含まれますV6では[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) 

答えて

1

何シンプル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) 
} 
+0

ありがとう!それは簡単でした!私はデータを読んでいる間にそれをやりたかったのです...この方がはるかに簡単です。どうもありがとう! – Essi

関連する問題