AWS.Alexa-data.frame(...,check.names = FALSE)错误:参数暗示行数不同:1、0

时间:2018-12-14 15:09:26

标签: r function amazon-web-services vector character

我正在使用aws.alexa包提取84个不同网站的历史Web流量数据,这些数据存储在名为website.names的字符向量中。

我正在调用的函数traffic_history() –以字符串作为其主要参数,并返回一个包含5列的数据帧。知道该函数一次仅返回1个站点的信息,因此我尝试创建一个循环来提取每个站点的流量历史记录,并将其存储在名为traffic的数据框中:

for (i in 1:length(website.names)) {
  traffic[i] <- traffic_history(paste(website.names[i], sep=""))
}

无论我尝试什么,我都会不断收到错误:“ data.frame(...,check.names = FALSE)中的错误:参数暗示不同的行数:1、0。”当我将traffic定义为与期望返回的尺寸相同时:

traffic <- as.data.frame(matrix(0, ncol = 5, nrow = 84))

任何有关如何解决此问题的想法将不胜感激。

2 个答案:

答案 0 :(得分:0)

我没有用于测试traffic_history代码的帐户,但是通常您不想附加到data.frame。我通常会创建一个data.frames列表(或data.tables!),然后将该列表绑定在一起。

webnames <- c("amazon.com", "apple.com")
dflist <- lapply(webnames, data.frame)
data.table::rbindlist(dflist)
#        X..i..
# 1: amazon.com
# 2:  apple.com
## OR
do.call(rbind, dflist) ## slower, but native solution
#        X..i..
# 1: amazon.com
# 2:  apple.com 

如果使用for循环,则可以将列表预先分配为:

dflist <- vector(mode = "list", length = length(webnames))

答案 1 :(得分:0)

已解决。这不是存储问题。当您输入包裹无法识别的网站时,就会引发该错误。理想情况下,它只会标记该网站并返回404错误,但至少目前不会。