如果节点(循环内)中没有内容,如何在 rvest 中为缺少的结果编写 NA 进一步如何将变量与结果合并
How to write NA for missing results in rvest if there was no content in node (within loop) further how to merge variable with results
嗨,我是 R 的新手,我尝试从包含阿迪达斯、宝马等公司名称的文本文件中获取 Yahoo Finance 的 tickers/symbols,以便 运行 进行事件研究之后。该文件包含大约 800 个名称。其中一些可以在雅虎找到,有些则不能。 (没关系)
到目前为止,我的循环工作正常,但不会显示丢失的结果。此外,它只创建一个 table,其中的数字和结果可能是 found.But 我想创建一个列表,显示变量 i(“firmen”)和已找到的结果或 NA如果没有结果。
希望大家帮帮我。谢谢!!!
我的代码:
library(rvest)
# company_names
firmen <- c(read.table("Mappe1.txt"))
# init
df <- NULL
# loop for search names in Yahoo Ticker Lookup
for(i in firmen){
# find url
url <- paste0("https://finance.yahoo.com/lookup/all?s=", i, "/")
page <- read_html(url,as="text")
# grab table
table <- page %>%
html_nodes(xpath = "//*[@id='lookup-page']/section/div/div/div/div[1]/table/tbody/tr[1]/td[1]") %>%
html_text() %>%
as.data.frame()
# bind to dataframe
df <- rbind(df, table)
}
我解决了第一个问题,现在空节点(如果在雅虎页面上没有找到“i”)将显示为“NA”
代码如下:
library(rvest)
# teams
firmen <- c(read.table("Mappe1.txt"))
# init
df <- NULL
table <- NULL
# loop
for(i in firmen){
# find url
url <- paste0("https://finance.yahoo.com/lookup/all?s=", i, "/")
page <- read_html(url,as="text")
# grab ticker from yahoo finance
table <- page %>%
html_nodes(xpath = "//*[@id='lookup-page']/section/div/div/div/div[1]/table/tbody/tr[1]/td[1]") %>%
html_text(trim=TRUE) %>% replace(!nzchar(table), NA) %>%
as.data.frame()
# bind to dataframe
df <- rbind(df,table)
}
现在只剩一题了
我如何将“df”和“firmen”合并为一个table,其中包含以下列:
“tickers”= df 和“firmen”= firmen
因为 df 只有一列名为“.”结果和列表 firmen 包含许多公司,但只有一行。
基本上我需要转换列表“firmen”,但我不知道如何
感谢您的帮助
嗨,我是 R 的新手,我尝试从包含阿迪达斯、宝马等公司名称的文本文件中获取 Yahoo Finance 的 tickers/symbols,以便 运行 进行事件研究之后。该文件包含大约 800 个名称。其中一些可以在雅虎找到,有些则不能。 (没关系)
到目前为止,我的循环工作正常,但不会显示丢失的结果。此外,它只创建一个 table,其中的数字和结果可能是 found.But 我想创建一个列表,显示变量 i(“firmen”)和已找到的结果或 NA如果没有结果。
希望大家帮帮我。谢谢!!!
我的代码:
library(rvest)
# company_names
firmen <- c(read.table("Mappe1.txt"))
# init
df <- NULL
# loop for search names in Yahoo Ticker Lookup
for(i in firmen){
# find url
url <- paste0("https://finance.yahoo.com/lookup/all?s=", i, "/")
page <- read_html(url,as="text")
# grab table
table <- page %>%
html_nodes(xpath = "//*[@id='lookup-page']/section/div/div/div/div[1]/table/tbody/tr[1]/td[1]") %>%
html_text() %>%
as.data.frame()
# bind to dataframe
df <- rbind(df, table)
}
我解决了第一个问题,现在空节点(如果在雅虎页面上没有找到“i”)将显示为“NA”
代码如下:
library(rvest)
# teams
firmen <- c(read.table("Mappe1.txt"))
# init
df <- NULL
table <- NULL
# loop
for(i in firmen){
# find url
url <- paste0("https://finance.yahoo.com/lookup/all?s=", i, "/")
page <- read_html(url,as="text")
# grab ticker from yahoo finance
table <- page %>%
html_nodes(xpath = "//*[@id='lookup-page']/section/div/div/div/div[1]/table/tbody/tr[1]/td[1]") %>%
html_text(trim=TRUE) %>% replace(!nzchar(table), NA) %>%
as.data.frame()
# bind to dataframe
df <- rbind(df,table)
}
现在只剩一题了
我如何将“df”和“firmen”合并为一个table,其中包含以下列:
“tickers”= df 和“firmen”= firmen
因为 df 只有一列名为“.”结果和列表 firmen 包含许多公司,但只有一行。
基本上我需要转换列表“firmen”,但我不知道如何
感谢您的帮助