lib nicht spezifiziert/Wordcloud als PNG abspeichern

Wie rufe ich R-Funktionen auf, wie selektiere ich Daten, ich weiß nicht genau ....

Moderatoren: EDi, jogo

Antworten
Kev1807
Beiträge: 15
Registriert: Mo Mai 21, 2018 1:47 pm

lib nicht spezifiziert/Wordcloud als PNG abspeichern

Beitrag von Kev1807 »

Hallo ihr Lieben,

Ich habe vor drei vier Tagen angefangen mir R etwas genauer anzuschauen, zu welchem Zweck?
Ich bin Historiker und promoviere gerade. Für meine Promotion dachte ich, es sei zielführend in irgendeiner Form dem digitalen Wandel und der sich veränderten Realität Rechnung zu tragen und nicht ausschließlich "klassisch historisch" zu arbeiten.
Warum ich glaube dazu befähigt zu sein?
Für einen Historiker/eine Historikerin verfüge ich über überdurchschnittlich Erfahrung im Bereich Programmierung etc. Ich verfüge über einige Vorkenntnisse in anderen Sprachen (Python, C# bspw.). Was macht der gewievte Historiker also?
Er schaut sich ein leicht verständliches Tutorial an und stößt auf Probleme:
Das besagte Tutorial: https://www.springboard.com/blog/text-mining-in-r/

Das erste Problem:
Installiere Paket nach ‘C:/Users/xx/Documents/R/win-library/3.5’
(da ‘lib’ nicht spezifiziert)
was will diese Meldung mir genau sagen und wie kann ich es beheben? Falls notwendig zu wissen: geschieht bei jedem

Code: Alles auswählen

install.packages("beliebiges Package")
Weitere Probleme:

Code: Alles auswählen

> text <- pdf_text("Middell.pdf")
> docs <- Corpus(VectorSource(text))
> docs
<<SimpleCorpus>>
Metadata:  corpus specific: 1, document level (indexed): 0
Content:  documents: 23
> docs <- tm_map(docs, content_transformer(tolower))
> docs <- tm_map(docs, removeWords, stopwords("english"))
> docs <- tm_map(docs, removePunctuation)
> docs <- tm_map(docs, stripWhitespace)
> docs <- tm_map(docs, stemDocument)
funktioniert problemlos, ebenso die TermDocumentMatrix, wie im Tutorial erklärt

Code: Alles auswählen

> tdm.midell <- TermDocumentMatrix(docs)
> tdm.midell
<<TermDocumentMatrix (terms: 2547, documents: 23)>>
Non-/sparse entries: 5368/53213
Sparsity           : 91%
Maximal term length: 51
Weighting          : term frequency (tf)
> m <- as.matrix(tdm.midell)
> v <- sort(rowSums(m),decreasing=TRUE)
> d <- data.frame(word=names(v),freq=v)
> head(d,10)
               word freq
global       global  130
spatial     spatial   82
world         world   75
histori     histori   69
territori territori   57
new             new   55
polit         polit   52
studi         studi   47
nation       nation   44
histor       histor   36
was genau da ist was ich mir erhoffte ...
Kommen wir nun zum Problem:

Dem Erstellen der Wordcloud und abspeichern als .png file ...

Code: Alles auswählen

> par(bg="grey30")
> png(file="Wordcloud-Middell.png", width=1000,height=700,bg="grey30")
> wordcloud(d$word,d$freq,col=terrain.colors(length(d$word),alpha=0.9), random.order=FALSE,rot.per=0.3)
jeder Befehl für sich gesehen funktioniert:
D.h. Es wird ein Fenster mit (wahrscheinlich grey30) grauem Hintergrund erstellt, es wird eine leere .png File im WOrking Directory erstellt und auch eine Wordcloud, aber alle zusammen funktionieren nicht ...

Dazu hätte ich noch einige Fragen:
das $-Zeichen, welche Funktion erfüllt das?

------ Das waren die Anfänger-Probleme -----

Jetzt eine kompliziertere Frage - eventuell brauch ich hierfür einen anderen Thread:
Ich habe bei meinem Promotionsthema in den Quellen verschlüsselte Briefe (ich vermute eine Affine Chiffre ohne das ganze wieder in Buchstaben zu übertragen... ); Was würdet ihr meinen, taugt R dazu, die Briefe zu untersuchen? (https://de.wikipedia.org/wiki/Affine_Ch ... %BCsselung)


liebe Grüße
vielen Dank im Vorraus,
verzeiht bitte falls es wirklich leichte Fragen sind - ich hab bisher keine Antworten gefunden :-(
jogo
Beiträge: 2085
Registriert: Fr Okt 07, 2016 8:25 am

Re: lib nicht spezifiziert/Wordcloud als PNG abspeichern

Beitrag von jogo »

Hallo Kev,

willkommen im Forum!
Kev1807 hat geschrieben: Mo Mai 21, 2018 2:25 pm Das erste Problem:
Installiere Paket nach ‘C:/Users/xx/Documents/R/win-library/3.5’
(da ‘lib’ nicht spezifiziert)
was will diese Meldung mir genau sagen und wie kann ich es beheben? Falls notwendig zu wissen: geschieht bei jedem

Code: Alles auswählen

install.packages("beliebiges Package")
Warum meinst Du, dass dies ein Problem ist?
Die Pakete werden einfach in einem user-spezifischen Verzeichnis installiert. Dass dies gut funktioniert, schreibst Du doch selber unten.
Weitere Probleme:

Code: Alles auswählen

> text <- pdf_text("Middell.pdf")
...
> docs <- tm_map(docs, stemDocument)
funktioniert problemlos, ebenso die TermDocumentMatrix, wie im Tutorial erklärt
:?: :?: :?:
Kommen wir nun zum Problem:

Dem Erstellen der Wordcloud und abspeichern als .png file ...

Code: Alles auswählen

> par(bg="grey30")
> png(file="Wordcloud-Middell.png", width=1000,height=700,bg="grey30")
> wordcloud(d$word,d$freq,col=terrain.colors(length(d$word),alpha=0.9), random.order=FALSE,rot.per=0.3)
jeder Befehl für sich gesehen funktioniert:
D.h. Es wird ein Fenster mit (wahrscheinlich grey30) grauem Hintergrund erstellt, es wird eine leere .png File im WOrking Directory erstellt und auch eine Wordcloud, aber alle zusammen funktionieren nicht ...
Bitte liefer uns ein minimales Beispiel mit Daten, so dass wir das Problem reproduzieren können. viewtopic.php?f=20&t=11
Dazu hätte ich noch einige Fragen:
das $-Zeichen, welche Funktion erfüllt das?
üblicherweise machen Funktionen das, was in der Dokumentation beschrieben ist.

Code: Alles auswählen

help('$')
Jetzt eine kompliziertere Frage - eventuell brauch ich hierfür einen anderen Thread:
Ich habe bei meinem Promotionsthema in den Quellen verschlüsselte Briefe (ich vermute eine Affine Chiffre ohne das ganze wieder in Buchstaben zu übertragen... ); Was würdet ihr meinen, taugt R dazu, die Briefe zu untersuchen? (https://de.wikipedia.org/wiki/Affine_Ch ... %BCsselung)
Ja, man kann R auch für sowas einsetzen - für einige andere einfachen Verschlüsselungen habe ich das sogar schon gemacht.

Gruß, Jörg
bigben
Beiträge: 2771
Registriert: Mi Okt 12, 2016 9:09 am

Re: lib nicht spezifiziert/Wordcloud als PNG abspeichern

Beitrag von bigben »

Hi!

Ich denke, Du musst Dein png() einfach noch mit einem

Code: Alles auswählen

dev.off()
beenden. Dann wird die Grafik in die erstellte Datei gespeichert.

Dazu hätte ich noch einige Fragen: das $-Zeichen, welche Funktion erfüllt das?
Mehrere gleichartige Wert in Reihen werden in R in sogenannten Vektoren gespeichert. Mehrere zusammengehörige Vektoren gleicher Länge werden zu sogenannten Dataframes zusammengefasst. Das $-Zeichen wird verwendet, um auf einzelne Spalten (Vektoren) in einem Dataframe zuzugreifen.

Code: Alles auswählen

# Beispieldaten definieren
datensatz <- data.frame( a = LETTERS,
                         b = letters,
                         c = 1:26,
                         d = runif(26))

# Gesamten Dataframe anzeigen lassen:
print(datensatz)

# Zusammenfassung über den Dataframe anzeigen lassen:
print(summary(datensatz))

# Nur die Spalte d anzeigen lassen
print(datensatz$d)

# Mittelwert der Spalte d berechnen
print(mean(datensatz$d))
LG,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Kev1807
Beiträge: 15
Registriert: Mo Mai 21, 2018 1:47 pm

Re: lib nicht spezifiziert/Wordcloud als PNG abspeichern

Beitrag von Kev1807 »

jogo hat geschrieben: Di Mai 22, 2018 10:05 am Hallo Kev,

willkommen im Forum!

Danke :-)
jogo hat geschrieben: Di Mai 22, 2018 10:05 am
Jetzt eine kompliziertere Frage - eventuell brauch ich hierfür einen anderen Thread:
Ich habe bei meinem Promotionsthema in den Quellen verschlüsselte Briefe (ich vermute eine Affine Chiffre ohne das ganze wieder in Buchstaben zu übertragen... ); Was würdet ihr meinen, taugt R dazu, die Briefe zu untersuchen? (https://de.wikipedia.org/wiki/Affine_Ch ... %BCsselung)
Ja, man kann R auch für sowas einsetzen - für einige andere einfachen Verschlüsselungen habe ich das sogar schon gemacht.
Gruß, Jörg
[/quote]

Sehr gut. Ich hab leider wenig Ahnung von Kryptographie (auch im 18. Jahrhundert weit weg von meinem Fachgebiet :-D), zum Glück wäre das eher eine Randnotiz, aber ich fände es spannend das zu knacken - allerdings gilt zumindest der Kapitän als recht firm wenn es um Verschlüsselung geht :-/

Was sind deine Erfahrungen zu Entschlüsselung? Eine Substitution wäre ja recht einfach über Frequenz-Analyse zu erreichen und wie ich das verstehe ist die Affine-Chifre ganz ähnlich ...
om Prinzip her muss ich in R, so ich es denn nutzen möchte, mindestens fit genug werden, um alle möglichen Schlüssel-Kombinationen für (a,b) durchzugenerieren, die Ergebnisse in eine *.txt-Datei auszugeben und darüber ein Skript laufen zu lassen, das sinnvolle Wortkombinationen auf Englisch erkennt ... :-D Vorrausgesetzt es ist wirklich eine Affine-Chifre deren letzter Schritt einfach damals nicht üblich war.


Vielen Dank für deine Hilfe!

--------
bigben hat geschrieben: Di Mai 22, 2018 2:58 pm Hi!

Ich denke, Du musst Dein png() einfach noch mit einem

Code: Alles auswählen

dev.off()
beenden. Dann wird die Grafik in die erstellte Datei gespeichert.
nope. Das hat nichts geändert, aber die Anpassung der Reihenfolge:

Code: Alles auswählen

par(bg="grey30")
wordcloud(...)
png(...)
dev.off()
Dazu hätte ich noch einige Fragen: das $-Zeichen, welche Funktion erfüllt das?
Mehrere gleichartige Wert in Reihen werden in R in sogenannten Vektoren gespeichert. Mehrere zusammengehörige Vektoren gleicher Länge werden zu sogenannten Dataframes zusammengefasst. Das $-Zeichen wird verwendet, um auf einzelne Spalten (Vektoren) in einem Dataframe zuzugreifen.

Code: Alles auswählen

# Beispieldaten definieren
datensatz <- data.frame( a = LETTERS,
                         b = letters,
                         c = 1:26,
                         d = runif(26))

# Gesamten Dataframe anzeigen lassen:
print(datensatz)

# Zusammenfassung über den Dataframe anzeigen lassen:
print(summary(datensatz))

# Nur die Spalte d anzeigen lassen
print(datensatz$d)

# Mittelwert der Spalte d berechnen
print(mean(datensatz$d))
LG,
Bernhard
Vielen Dank auch an dich :-)

Ich wünsche euch einen schönen Tag und verbuddel mich jetzt wieder kurzsichtig in Akten und transkribiere :-)
bigben
Beiträge: 2771
Registriert: Mi Okt 12, 2016 9:09 am

Re: lib nicht spezifiziert/Wordcloud als PNG abspeichern

Beitrag von bigben »

Kev1807 hat geschrieben: Di Mai 22, 2018 4:36 pmom Prinzip her muss ich in R, so ich es denn nutzen möchte, mindestens fit genug werden, um alle möglichen Schlüssel-Kombinationen für (a,b) durchzugenerieren,
Ich hab zwar keine Ahnung, was affine Chiffre sind, aber wenn ich Wikipedia richtig lese, dann versuch mal das hier:

Code: Alles auswählen

expand.grid(a = c(1, 3, 5, 7, 9, 11, 15, 17, 19, 21, 23, 25), b = 1:25)
Wir sind hier ja schließlich nicht bei C#.

nope.
Freut mich, dass der Verweis auf dev.off() die Lösung gebracht hat.

LG,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
bigben
Beiträge: 2771
Registriert: Mi Okt 12, 2016 9:09 am

Re: lib nicht spezifiziert/Wordcloud als PNG abspeichern

Beitrag von bigben »

Hier noch zwei Funktionen, die Dir vielleicht beim Dechiffrieren helfen werden:

Code: Alles auswählen

# zw - Zahlenwert eines Buchstabens, wobei A=0, B=1, ...

zw <- Vectorize(function(buchstabe) grep(buchstabe, LETTERS)-1 )

# Beispiele:
zw("A")  # soll 0 ergeben
zw("B")  # soll 1 ergeben
zw(c("A", "B", "C", "Z"))

# zw_string - wende zw auf alle Buchstaben in einem String an
zw_string <- function(wort) sapply(strsplit(wort, split=""), zw)

#Beispiel:
zw_string("HALLO MITEINANDER!")
Viel Spaß damit,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
jogo
Beiträge: 2085
Registriert: Fr Okt 07, 2016 8:25 am

Re: lib nicht spezifiziert/Wordcloud als PNG abspeichern

Beitrag von jogo »

Kev1807 hat geschrieben: Di Mai 22, 2018 4:36 pm
jogo hat geschrieben: Di Mai 22, 2018 10:05 am Ja, man kann R auch für sowas einsetzen - für einige andere einfachen Verschlüsselungen habe ich das sogar schon gemacht.
Sehr gut. Ich hab leider wenig Ahnung von Kryptographie (auch im 18. Jahrhundert weit weg von meinem Fachgebiet :-D), zum Glück wäre das eher eine Randnotiz, aber ich fände es spannend das zu knacken - allerdings gilt zumindest der Kapitän als recht firm wenn es um Verschlüsselung geht :-/

Was sind deine Erfahrungen zu Entschlüsselung? Eine Substitution wäre ja recht einfach über Frequenz-Analyse zu erreichen und wie ich das verstehe ist die Affine-Chifre ganz ähnlich ...
Vom Prinzip her muss ich in R, so ich es denn nutzen möchte, mindestens fit genug werden, um alle möglichen Schlüssel-Kombinationen für (a,b) durchzugenerieren, die Ergebnisse in eine *.txt-Datei auszugeben und darüber ein Skript laufen zu lassen, das sinnvolle Wortkombinationen auf Englisch erkennt ... :-D Vorrausgesetzt es ist wirklich eine Affine-Chifre deren letzter Schritt einfach damals nicht üblich war.
Man könnte auch nach einer Häufigkeitsanalyse sich zunächst auf die Schlüssel (a, b) beschränken, die das Klartext-"E" in das chiffrierte Äquivalent überführen. Für diese Varianten würde ich mir der Reihe nach den generierten Text anzeigen lassen.

Gruß, Jörg
Antworten