Ошибка в `$ <-. Data.frame` (` * tmp * `," Position ", value = 1: 0): замена имеет 2 строки, данные имеют 0 - PullRequest
0 голосов
/ 02 марта 2020

Я получаю сообщение об ошибке в названии выше при запуске кода ниже:

library(dplyr)
library(RCurl)
library(rjson)
library(urltools)
library(stringr)
library(selectr)

### API SEMRUSH
keyAPI <- "enter API key here"
country <- "be"
# limit : nb query
# nbresult : nb results per query
limit <- 400
nbresult <- 100
# KW list input filepath
kwlist_filepath <- "c:/Users/click/Desktop/data seo labs/SemRush export/kwlist.csv"



kwlist <- read.csv(file = kwlist_filepath, header = TRUE) %>%
  rename(Keyword = ï..Keyword)

semrushGetTop100organic <- function(keyword,country,limit) {

  keywordUrl <- url_encode(keyword)

  url <- paste("http://api.semrush.com/?type=phrase_organic&key=",keyAPI,"&display_limit=",limit,
               "&export_columns=Dn,Ur&phrase=",keywordUrl,"&database=",country,sep="")


  # generate new file csv
  print("generating file from api semrush")

  filename <- tempfile()
  f <- CFILE(filename, "wb")

  curlPerform(url = url
              , writedata = f@ref
              , encoding = "UTF-8"
              #, verbose = TRUE
  )
  close(f)


  result <- read.csv( filename, header = TRUE, sep=";",  encoding = "UFT-8", stringsAsFactors=FALSE)  %>%
    mutate(Keyword=keyword)

  result$Position <- seq.int(nrow(result))

  result$isTopTen <- FALSE
  result$isTopTen[which(result$Position<=10)] <- TRUE    

  return(result)
}



count(kwlist)

for(i in 1:count(kwlist)$n){

  keyword <- kwlist$Keyword[i]
  print(keyword)

  if (i==1){
    top100rankingForkwlist <- semrushGetTop100organic(keyword,country,nbresult)
  }
  else {
    top100rankingForkwlist <- rbind(top100rankingForkwlist,semrushGetTop100organic(keyword,country,nbresult))
  }  

}

urllist <- distinct(data.frame(top100rankingForkwlist$Url)) %>%
  transmute(Url = top100rankingForkwlist.Url)

При запуске его в CSV-файле с небольшим количеством ключевых слов, это, кажется, работает нормально, но когда количество ключевых слов растет, эта ошибка возникает. Я не смог точно определить, связано ли это с количеством ключевых слов или с чем-то еще (как я видел сценарий от go до 10 ключевых слов до выдачи ошибки, но также до 23 до выдачи ошибки ... )

Если вам необходим ключ API для диагностики проблемы, отправьте мне сообщение в личку.

Спасибо! С уважением,

...