您如何看待在循环之前将NA分配给新列?是否考虑最佳做法?有没有更优雅的方法可以做到这一点?
我发现在用循环填充列之前不给NA赋值会引起一些麻烦,特别是在API无法提供答案的行上:它用上一行的数据填充行...
可以帮忙吗?
Url <- c("https://www.r-project.org/","https://cran.r-project.org/")
df <- data.frame(Url)
URL_row <- nrow(df)
df$PageSpeed_Score <- NA
df$PageSpeed_NumberResources <- NA
df$PageSpeed_NumberHosts <- NA
for (i in 1:URL_row) {
url_to_check <- as.character(df[i, "Url"])
print(url_to_check)
PageSpeed_APIrequest <- paste("https://www.googleapis.com/pagespeedonline/v2/runPagespeed?url=", url_to_check,"&strategy=desktop", sep = "")
PageSpeed_APIrequest <- fromJSON(PageSpeed_APIrequest)
df$PageSpeed_Score[i] <- PageSpeed_APIrequest$rule$SPEED
df$PageSpeed_NumberResources[i] <- PageSpeed_APIrequest$pageStats$numberResources
df$PageSpeed_NumberHosts[i] <- PageSpeed_APIrequest$pageStats$numberHosts
}
答案 0 :(得分:0)
NA
的唯一(小)问题是逻辑类型。
typeof(NA)
根据列的预期类型,最好使用NA_character_
或NA_real_
(等等)。没什么大不了,因为R中的可变性。