루프 (for)를 사용하여 R의 목록에있는 이름을 사용하여 .file 및 write.csv를 다운로드하는 방법

사용자 3693474

그래서 나는 웹에서 여러 국가의 통화로 다운로드 된 각 파일에 대해 .csv를 작성해야합니다. 그리고 나는 그들의 진드기를 사용하여 저장되기를 원했습니다.

그래서 내가 했어요

codigos = list("JPY", "RUB","SGD","BRL","INR","THB","GBP","EUR","CHF")

for (i in 1:9){

url1 = 'http://www.exchangerates.org.uk/'
url2='-USD-exchange-rate-history-full.html'

codigos = list("JPY", "RUB","SGD","BRL","INR","THB","GBP","EUR","CHF")
codigo = codigos[i]

url <- paste(url1, codigo, url2, sep = "")



download.file(url, destfile='codigo.html')


dados <- readHTMLTable('codigo.html')

write.csv(dados, file="codigo.csv")


}

루프에 의해 변경된 각 URL을 읽을 수 있지만 다운로드하거나 CSV를 개별적으로 저장할 수는 없습니다. 이 과정에서 각각이 codigo.html이라는 파일에 "저장"되는 것을 볼 수 있으며 마지막에는 목록의 마지막 국가와 함께 codigo.html 및 codigo.csv를 얻습니다.

매튜 룬드 버그

문제는 모든 것을 동일한 파일 이름에 저장한다는 것입니다. 루프를 통과 할 때마다 이전 내용을 완전히 덮어 씁니다.

readHTMLTable은 URL을 사용합니다. 따라서 아마도 다음과 같은 순서가 있습니다.

for (i in 1:9){

    url1 = 'http://www.exchangerates.org.uk/'
    url2='-USD-exchange-rate-history-full.html'

    cod = codigos[i]

    url <- paste(url1, cod, url2, sep = "")

    dados <- readHTMLTable(url)

    # Create a unique name for each file
    filename <- paste(cod, 'csv', sep='.')
    write.csv(dados, file=filename)
}

디스크에 csv 파일을 만드는 대신 목록을 사용하여 데이터를 보관하는 것이 더 나을 수 있으므로 목록을 조작 할 수 있습니다.

url1 <- 'http://www.exchangerates.org.uk/'
url2 <- '-USD-exchange-rate-history-full.html'

l <- lapply(codigos
            , function(i) readHTMLTable(paste0(url1, i, url2))
            )
names(l) <- codigos

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관