Seite 1 von 1

Eigene Funktion in Tabelle nutzen

Verfasst: Do Nov 15, 2018 6:52 pm
von Kramer
Moin,

Ich habe eine Tabelle mit URLs (siehe Code). An diese Tabelle möchte ich eine weiter Spalte setzen, die die Funktion angewendet auf die URL (zweite Spalte von Base) ausgibt. Der letzte Befehl gibt folgene Fehlermeldung aus:

Error in doc_parse_file(con, encoding = encoding, as_html = as_html, options = options) :
Expecting a single string value: [type=character; extent=4].


Die von mir definierte Funktion macht genau das richtige, aber ich schaffe es nicht das ganze in meine Tabelle einzubinden. Hat jemand eine Idee wie man das macht?

Code: Alles auswählen


Base<-structure(list(Corporatebonds.ISIN = structure(1:4, .Label = c("AT0000A0U9J2", 
                                                               "AT0000A0V7D8","AT0000A0VL70", "AT0000A0VLS5"), class = "factor"), Link = c("https://www.boerse-frankfurt.de/anleihen/AT0000A0U9J2", 
                                                             "https://www.boerse-frankfurt.de/anleihen/AT0000A0V7D8", "https://www.boerse-frankfurt.de/anleihen/AT0000A0VL70", 
                                                             "https://www.boerse-frankfurt.de/anleihen/AT0000A0VLS5")), row.names = 8:11, class = "data.frame")

Get_Link_Name <- function (Link) {
  a<-read_html(Link)
  xml_attrs(xml_child(xml_child(xml_child(xml_child(xml_child(xml_child(xml_child(xml_child(xml_child(xml_child(a, 2), 4), 1), 2), 1), 1), 1), 9), 3), 1))[["href"]]
}

Base$Insert_part<-Get_Link_Name(Base$Link)

Beste Grüße

Re: Eigene Funktion in Tabelle nutzen

Verfasst: Do Nov 15, 2018 8:20 pm
von EDi
Ich vermute, dass deine Funktion nicht vektorisiert ist (kann nur 1 Link auf einmal bearbeiten).

Was ist mit

Code: Alles auswählen

sapply(Base$Link, Get_Link_Name)
? Also die Funktion auf jedes Element einzeln anwenden...

Re: Eigene Funktion in Tabelle nutzen

Verfasst: Fr Nov 16, 2018 11:04 am
von Kramer
Funktioniert, habe das ganze dann hinterher wieder ins gewünschte Format gebracht. Danke!