cSplit_e 来自 splitstackshape 包不考虑 NA?
cSplit_e from splitstackshape package not accounting for NA's?
我想跟进我 post 编辑 的问题。当我收到 baseR
和 data.table
解决方案时,我正在尝试使用 splitstackshape 包中的 cSplit_e
来实现相同的解决方案,正如我之前 post 的评论中所建议的那样。使用如下修改后的数据(即使用 NA),
data1<-structure(list(reason = c("1", "1", NA, "1", "1", "4 5", "1",
"1", "1", "1", "1", "1 2 3 4", "1 2 5", NA, NA)), .Names = "reason", class = "data.frame", row.names = c(NA,
-15L))
#loading packages
library(data.table)
library(splitstackshape)
cSplit_e(setDT(data1),1," ",mode = "value") # with NA's doesn't work
Error in seq.default(min(vec), max(vec)) : 'from' must be a finite number
data2<-na.omit(setDT(data1),cols="reason") # removing NA's
cSplit_e(data2,1," ",mode = "value") # without NA's works
reason reason_1 reason_2 reason_3 reason_4 reason_5
1: 1 1 NA NA NA NA
2: 1 1 NA NA NA NA
3: 1 1 NA NA NA NA
4: 1 1 NA NA NA NA
5: 4 5 NA NA NA 4 5
6: 1 1 NA NA NA NA
7: 1 1 NA NA NA NA
8: 1 1 NA NA NA NA
9: 1 1 NA NA NA NA
10: 1 1 NA NA NA NA
11: 1 2 3 4 1 2 3 4 NA
12: 1 2 5 1 2 NA NA 5
所以,问题是 cSplit_e
是否考虑了要拆分的列中的 NA?
这已在 "splitstackshape" 的错误修复版本 (v1.4.4) 中修复。感谢您报告。
使用update.packages()
后,您应该可以做到:
packageVersion("splitstackshape")
## [1] ‘1.4.4’
cSplit_e(data1, 1, " ", mode = "value")
## reason reason_1 reason_2 reason_3 reason_4 reason_5
## 1 1 1 NA NA NA NA
## 2 1 1 NA NA NA NA
## 3 <NA> NA NA NA NA NA
## 4 1 1 NA NA NA NA
## 5 1 1 NA NA NA NA
## 6 4 5 NA NA NA 4 5
## 7 1 1 NA NA NA NA
## 8 1 1 NA NA NA NA
## 9 1 1 NA NA NA NA
## 10 1 1 NA NA NA NA
## 11 1 1 NA NA NA NA
## 12 1 2 3 4 1 2 3 4 NA
## 13 1 2 5 1 2 NA NA 5
## 14 <NA> NA NA NA NA NA
## 15 <NA> NA NA NA NA NA
请注意,1.4.4 已将 "data.table" 从 "depends" 移动到 "imports"。
我想跟进我 post 编辑 baseR
和 data.table
解决方案时,我正在尝试使用 splitstackshape 包中的 cSplit_e
来实现相同的解决方案,正如我之前 post 的评论中所建议的那样。使用如下修改后的数据(即使用 NA),
data1<-structure(list(reason = c("1", "1", NA, "1", "1", "4 5", "1",
"1", "1", "1", "1", "1 2 3 4", "1 2 5", NA, NA)), .Names = "reason", class = "data.frame", row.names = c(NA,
-15L))
#loading packages
library(data.table)
library(splitstackshape)
cSplit_e(setDT(data1),1," ",mode = "value") # with NA's doesn't work
Error in seq.default(min(vec), max(vec)) : 'from' must be a finite number
data2<-na.omit(setDT(data1),cols="reason") # removing NA's
cSplit_e(data2,1," ",mode = "value") # without NA's works
reason reason_1 reason_2 reason_3 reason_4 reason_5
1: 1 1 NA NA NA NA
2: 1 1 NA NA NA NA
3: 1 1 NA NA NA NA
4: 1 1 NA NA NA NA
5: 4 5 NA NA NA 4 5
6: 1 1 NA NA NA NA
7: 1 1 NA NA NA NA
8: 1 1 NA NA NA NA
9: 1 1 NA NA NA NA
10: 1 1 NA NA NA NA
11: 1 2 3 4 1 2 3 4 NA
12: 1 2 5 1 2 NA NA 5
所以,问题是 cSplit_e
是否考虑了要拆分的列中的 NA?
这已在 "splitstackshape" 的错误修复版本 (v1.4.4) 中修复。感谢您报告。
使用update.packages()
后,您应该可以做到:
packageVersion("splitstackshape")
## [1] ‘1.4.4’
cSplit_e(data1, 1, " ", mode = "value")
## reason reason_1 reason_2 reason_3 reason_4 reason_5
## 1 1 1 NA NA NA NA
## 2 1 1 NA NA NA NA
## 3 <NA> NA NA NA NA NA
## 4 1 1 NA NA NA NA
## 5 1 1 NA NA NA NA
## 6 4 5 NA NA NA 4 5
## 7 1 1 NA NA NA NA
## 8 1 1 NA NA NA NA
## 9 1 1 NA NA NA NA
## 10 1 1 NA NA NA NA
## 11 1 1 NA NA NA NA
## 12 1 2 3 4 1 2 3 4 NA
## 13 1 2 5 1 2 NA NA 5
## 14 <NA> NA NA NA NA NA
## 15 <NA> NA NA NA NA NA
请注意,1.4.4 已将 "data.table" 从 "depends" 移动到 "imports"。