我使用aws.alexa
包提取84个不同网站的历史网络流量数据,这些数据存储在一个名为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))
任何关于如何解决这个问题的想法都将不胜感激。
我没有测试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))
已解决。这不是存储问题。当你进入一个软件包无法识别的网站时,它会抛出这个错误。理想情况下,它只会标记网站并返回404错误,但至少目前没有。