簡體   English   中英

無效因子水平循環到“ strsplit”數據

[英]Invalid factor level in loop to `strsplit` data

示例數據:

tmp <-
c("30.55,114.27", "39.31,115.92", "0,0", "0,0", "27.35,111.78", 
"0,0", "34.47,118.97", "34.62,113.72", "0,0", "0,0", "0,0", "31.43,120.55", 
"0,0", "0,0", "31.67,119.82", "44.28,129.04", "23.37,113.44", 
"23.31,112.84", "24.41,102.34", "30.77,104.24", "0,0")

循環到字符串拆分數據:

dat1 <- data.frame(as.character(NA),as.character(NA))
for(i in 1:length(tmp)){#nrow(train2)){
  dat1[i,] <- do.call(rbind, strsplit(tmp[i], ","))  
}

問題:

有50個或更多警告(使用warnings()查看前50個)

 Warning messages: 1: In `[<-.factor`(`*tmp*`, iseq, value = "0") : invalid factor level, NA generated 2: In `[<-.factor`(`*tmp*`, iseq, value = "0") : invalid factor level, NA generated 3: In `[<-.factor`(`*tmp*`, iseq, value = "29.29") : invalid factor level, NA generated 4: In `[<-.factor`(`*tmp*`, iseq, value = "106.25") : invalid factor level, NA generated 5: In `[<-.factor`(`*tmp*`, iseq, value = "0") : invalid factor level, NA generated 6: In `[<-.factor`(`*tmp*`, iseq, value = "0") : 

但是,如果我只運行1行,它看起來就正確了:

> do.call(rbind, strsplit(tmp[i], ","))  
     [,1]    [,2]    
[1,] "30.55" "114.27"

在這種情況下,似乎不需要循環。 你可以試試

dat1 <- do.call(rbind, strsplit(tmp, ","))

暫無
暫無

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

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