r - AWS.Alexa - data.frame 中的错误(...,check.names = FALSE):参数暗示不同的行数:1、0
问题描述
我正在使用该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))
推荐阅读
- android - 尝试使用改造 android 使用发布请求和响应,但无法将 org.json.JSONObject$1 之类的错误转换为 JSONArray
- haskell - 如何在haskell的列表中存储高阶函数数据?
- c++ - 为什么 std::call_once 在加入和分离线程中表现不同?
- sql-server - 如何在链接服务器中运行选择查询
- xamarin.forms - Xamarin iOS 搜索栏自定义
- python - imread 在 Spyder 中有效,但在 VS Code 中无效
- android - app-release 版本与 app-debug 版本有何不同?
- python - Super:超出最大递归深度
- python - 执行代码时如何打开或关闭 Visual Studio python (Jupyter) 交互式窗口 (2019)?
- jenkins - 如何通过外部 groovy 脚本 CURL 语句访问 jenkins 凭证