假设您的
mydata
应该是正斜杠,我们可以用换行符替换正斜杠,并使用
read.csv
.
mydata <- "/0,2,5,6,2,5,0,0,0,0/0,0,8,1,4,,2,4,0,0/5,6,2,5,0,0,7,8,3,2/"
dat <- read.csv(text = gsub("/", "\n", mydata), header = FALSE)
dat
# V1 V2 V3 V4 V5 V6 V7 V8 V9 V10
# 1 0 2 5 6 2 5 0 0 0 0
# 2 0 0 8 1 4 NA 2 4 0 0
# 3 5 6 2 5 0 0 7 8 3 2
你展示了
0
在中间,目前
NA
(由于中的空单元格
mydata
),我们可以通过以下方式轻松解决:
dat[] <- lapply(dat, function(z) ifelse(is.na(z), 0, z))
dat
# V1 V2 V3 V4 V5 V6 V7 V8 V9 V10
# 1 0 2 5 6 2 5 0 0 0 0
# 2 0 0 8 1 4 0 2 4 0 0
# 3 5 6 2 5 0 0 7 8 3 2
如果你真的想使用
strsplit
然而,我们可以使用
out <- strsplit(mydata, "/")[[1]] |>
strsplit(",") |>
do.call(rbind, args = _) |>
as.data.frame()
out
# V1 V2 V3 V4 V5 V6 V7 V8 V9 V10
# 1 0 2 5 6 2 5 0 0 0 0
# 2 0 0 8 1 4 2 4 0 0
# 3 5 6 2 5 0 0 7 8 3 2
它现在是一个字符串框架。我们可以进行与上述类似的后期处理(
out[] <- lapply(...)
)将空/null转换为
0
.