Ich habe über 10000 Dateien. Ich stelle zuerst mein Verzeichnis auf den Ordner, in dem sich die Dateien befinden.Wie kann ich eine sehr große Liste manipulieren
Dann mache ich einen Link zu der alle Dateien mit .txt
Format wie dieses
filenames <- list.files("path to the file", pattern="*.txt", full.names=TRUE)
Dann las ich es mit fread
ldf<- lapply(filenames, FUN=fread, header=TRUE)
Warum fread? tatsächlich, wenn ich data.table
verwende, vermasselt es zum Beispiel dann muss ich hinzufügen sep","
und row.names=FALSE
etc. Wenn Sie einen besseren Weg kennen, beraten Sie sich bitte. In jedem Fall
Nachdem ich dies tat, habe ich am Ende mit einer riesigen Liste, den ich jetzt benötigen, um Daten daraus zu extrahieren. Als Beispiel habe ich versucht, ein repräsentativen Daten zu machen unter
Natürlich in realen Daten, gibt es viel viel mehr Spalten in jeder Datei, gibt es nur drei genannte check
und myfile
und Myname
Jetzt habe ich versucht zu halten nur Spalte myfile
und Myname
durch den folgenden Befehl, der es nicht geschafft hat.
t<- lapply(ldf, `[`, c(2,3))
my.list <- list(structure(list(check = c(FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE), myfile = c("", "1xLabel:13C(6)15N(4) [R11]", "1xOxidation [M7]",
"", "1xLabel:13C(6)15N(4) [R11]", ""), myname = c("Q9Y383", "Q9Y383",
"Q9Y383", "Q15366-2", "Q15366-2", "Q15366-2")), .Names = c("check",
"myfile", "myname"), row.names = c(NA, -6L), class = c("data.table",
"data.frame")), structure(list(
check = c(FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE
), myfile = c(NA, NA, NA, NA, NA, NA, NA), Myname = c("F8W727",
"O76021", "P46783", "P35527", "Q96C45", "Q9Y383", "Q9Y383"
)), .Names = c("check", "myfile", "myname"), row.names = c(NA,
-7L), class = c("data.table", "data.frame")),
structure(list(check = c(FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE), myfile = c("",
"2xLabel:13C(6)15N(4) [R6; R8]; 1xCarbamidomethyl [C4]",
"", "", "", "1xCarbamidomethyl [C1]", "", "", "", "", "1xLabel:13C(6)15N(4) [R6]; 1xCarbamidomethyl [C5]"
), myname = c("P39019", "A2A3R5; P62753", "Q8IYB3; E9PCT1; M0R088; A9Z1X7; Q8IYB3-2",
"S4R3J4; O43390-3; B4DT28; O43390; O43390-2; O60506; O60506-2; E7ETM7",
"P07910-4; B4DY08; G3V4C1; P07910-2; G3V4W0; P07910; G3V5V7; P07910-3; G3V2D6; G3V2Q1",
"D6R9X9; D6RG19; P61927", "Q00839", "G3XAD8; H0YGI8; P31948; F5H0T1",
"Q8IYB3; E9PCT1; M0R088; A9Z1X7; Q8IYB3-2", "P42766", "Q9NX58; D6RDJ1"
)), .Names = c("check", "myfile", "myname"), row.names = c(NA,
-11L), class = c("data.table", "data.frame")),
structure(list(check = c(FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE), myfile = c("",
"", "", "", "1xLabel:13C(6)15N(4) [R7]", "", "", "", "3xLabel:13C(6)15N(4) [R1; R7; R10]",
"", ""), myname = c("P61247", "P39019", "Q9NWH9", "P62917",
"P62917", "E9PCT1", "Q15149", "Q14152", "Q14152", "Q15020",
"Q02543")), .Names = c("check", "myfile", "myname"), row.names = c(NA,
-11L), class = c("data.table", "data.frame")))
Was möchte ich?
ich überprüfen möchten, ob ich myfile und myname in allen Dateien geladen ich? und dann einen Ausgang wie folgt haben
file1 file2 file3 file4
myfile myname myfile myname myfile myname myfile myname
info info info info info info info info
Um es reproduzierbarer zu machen. Ich möchte das Beispiel Datenausgabe wie sein unter
myout<- structure(list(myfile1 = structure(c(NA, 1L, 2L, NA, 1L, NA,
NA, NA, NA, NA, NA), .Label = c("1xLabel:13C(6)15N(4) [R11]",
"1xOxidation [M7]"), class = "factor"), Myname1 = structure(c(2L,
2L, 2L, 1L, 1L, 1L, NA, NA, NA, NA, NA), .Label = c("Q15366-2",
"Q9Y383"), class = "factor"), myfile2 = c(NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA), Myname2 = structure(c(1L, 2L, 4L, 3L,
5L, 6L, 6L, NA, NA, NA, NA), .Label = c("F8W727", "O76021", "P35527",
"P46783", "Q96C45", "Q9Y383"), class = "factor"), myfile3 = structure(c(NA,
3L, NA, NA, NA, 1L, NA, NA, NA, NA, 2L), .Label = c("1xCarbamidomethyl [C1]",
"1xLabel:13C(6)15N(4) [R6]; 1xCarbamidomethyl [C5]", "2xLabel:13C(6)15N(4) [R6; R8]; 1xCarbamidomethyl [C4]"
), class = "factor"), Myname3 = structure(c(5L, 1L, 8L, 10L,
4L, 2L, 7L, 3L, 8L, 6L, 9L), .Label = c("A2A3R5; P62753", "D6R9X9; D6RG19; P61927",
"G3XAD8; H0YGI8; P31948; F5H0T1", "P07910-4; B4DY08; G3V4C1; P07910-2; G3V4W0; P07910; G3V5V7; P07910-3; G3V2D6; G3V2Q1",
"P39019", "P42766", "Q00839", "Q8IYB3; E9PCT1; M0R088; A9Z1X7; Q8IYB3-2",
"Q9NX58; D6RDJ1", "S4R3J4; O43390-3; B4DT28; O43390; O43390-2; O60506; O60506-2; E7ETM7"
), class = "factor"), myfile4 = structure(c(NA, NA, NA, NA, 1L,
NA, NA, NA, 2L, NA, NA), .Label = c("1xLabel:13C(6)15N(4) [R7]",
"3xLabel:13C(6)15N(4) [R1; R7; R10]"), class = "factor"), Myname4 = structure(c(3L,
2L, 9L, 4L, 4L, 1L, 8L, 6L, 6L, 7L, 5L), .Label = c("E9PCT1",
"P39019", "P61247", "P62917", "Q02543", "Q14152", "Q15020", "Q15149",
"Q9NWH9"), class = "factor")), .Names = c("myfile1", "Myname1",
"myfile2", "Myname2", "myfile3", "Myname3", "myfile4", "Myname4"
), class = "data.frame", row.names = c(NA, -11L))
neue Anfrage
Dann möchte ich die Daten in zwei Datenrahmen spalten. Man hält nur die Mynames, dass ihre Meinedat besondere Saiten genannt df1
und eine solche Mynames, die ihre myfiles haben nichts oder nicht jene speziellen Strings
df1<- structure(list(myname1 = structure(c(3L, 2L, 1L, 1L), .Label = c("",
"Q15366-2", "Q9Y383"), class = "factor"), myname2 = c(NA, NA,
NA, NA), myname3 = structure(c(1L, 3L, 4L, 2L), .Label = c("A2A3R5",
"D6RDJ1", "P62753", "Q9NX58"), class = "factor"), myname4 = structure(c(2L,
3L, 1L, 1L), .Label = c("", "P62917", "Q14152"), class = "factor")), .Names = c("myname1",
"myname2", "myname3", "myname4"), class = "data.frame", row.names = c(NA,
-4L))
df2 <- structure(list(myname1 = structure(c(3L, 3L, 2L, 2L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L), .Label = c("", "Q15366-2", "Q9Y383"), class = "factor"),
myname2 = structure(c(2L, 3L, 5L, 4L, 6L, 7L, 7L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L), .Label = c("", "F8W727", "O76021", "P35527", "P46783",
"Q96C45", "Q9Y383"), class = "factor"), myname3 = structure(c(29L,
33L, 11L, 18L, 1L, 34L, 35L, 22L, 6L, 20L, 21L, 23L, 4L,
10L, 27L, 7L, 2L, 25L, 15L, 24L, 16L, 26L, 13L, 14L, 8L,
9L, 31L, 8L, 9L, 31L, 32L, 17L, 3L, 28L, 12L, 33L, 11L, 19L,
5L, 34L, 30L), .Label = c(" A9Z1X7", " G3V4C1", " H0YGI8",
" O60506-2 ", "A9Z1X7", "B4DT28", "B4DY08", "D6R9X9", "D6RG19",
"E7ETM7", "E9PCT1", "F5H0T1", "G3V2D6", "G3V2Q1", "G3V4W0",
"G3V5V7", "G3XAD8", "M0R088", "M0R088 ", "O43390", "O43390-2",
"O43390-3", "O60506", "P07910", "P07910-2 ", "P07910-3 ",
"P07910-4", "P31948", "P39019", "P42766", "P61927", "Q00839",
"Q8IYB3", "Q8IYB3-2", "S4R3J4"), class = "factor"), myname4 = structure(c(4L,
3L, 10L, 5L, 2L, 9L, 7L, 8L, 6L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L), .Label = c("",
"E9PCT1", "P39019", "P61247", "P62917", "Q02543", "Q14152",
"Q15020", "Q15149", "Q9NWH9"), class = "factor")), .Names = c("myname1",
"myname2", "myname3", "myname4"), class = "data.frame", row.names = c(NA,
-41L))
'my.list' wirft Fehler. – Sotos
'Fehler: unerwartete '<' in: "c (NA, -11L), cla"' – Sotos
@akrun warum hast du wieder deine Antwort entfernen !!!! – nik