在R中循环之前将NA分配给新列

时间:2018-07-20 09:10:59

标签: r for-loop

您如何看待在循环之前将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

}

1 个答案:

答案 0 :(得分:0)

NA的唯一(小)问题是逻辑类型。

typeof(NA)

根据列的预期类型,最好使用NA_character_NA_real_(等等)。没什么大不了,因为R中的可变性。