簡體   English   中英

更換長度零R

[英]replacement length zero R

我正在嘗試提取一些Web數據並將其放入數據框以供將來使用。 一些列中的某些值是NA。 我希望這些單元格具有NA或一些文本。 這是我正在使用的for循環:

    extra <- as.data.frame(matrix(NA, nrow = length(main.node), ncol = 2))
    for (i in 1:length(main.node)){
      extra[i,1] <- main.node[[i]]$data$author
      extra[i,2] <- main.node[[i]]$data$author_flair_text
      }

問題是author_flair_text某些值不存在(author列工作正常)。 例如,調用main.node[[4]]$data$author_flair_text返回NULL

我遇到了錯誤

Error in `[<-.data.frame`(`*tmp*`, i, 2, value = NULL) : 
  replacement has length zero

基本上,我需要for循環來填寫缺少的信息。 有沒有辦法在for循環中將NULL轉換為“ NULL”?

如果有幫助,這里是main.node來源:

raw_data = tryCatch(RJSONIO::fromJSON(readLines(URL, warn = FALSE)), 
                        error = function(e) NULL)
main.node = raw_data[[2]]$data$children

謝謝!!

嘗試這個。 警告我沒有運行它,我只是寫了它,所以可能有錯別字:

extra <- as.data.frame(matrix(NA, nrow = length(main.node), ncol = 2))
for (i in 1:length(main.node)){
  extra[i,1] <- main.node[[i]]$data$author
  temp <- main.node[[i]]$data$author_flair_text
  if(is.null(temp)){
    temp <- "NULL"
  }
  extra[i,2] <- temp
}

您可以在此處使用ifelse()構造。 它具有一個test參數(針對條件),一個yes參數(如果test為true的值)和一個no參數(如果test為false的值)。

在您的情況下,它將看起來像這樣:

temp <- main.node[[i]]$data$author_flair_text
extra[i,2] <- ifelse(is.null(temp), "your_null_indicator", temp)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM