如何将带方括号的文本数据作为列表导入R?

ctzwtxfj  于 2022-12-20  发布在  其他
关注(0)|答案(1)|浏览(123)

我有一个文本文件,看起来像这样:

text = '
[2,4,3,1,5]
[6,2,4,3,6]
[[3],[1,5,2]]
[[4],8]
[7]
[[8,9,1]]
'

正如你所看到的,这些值是基于[]的列表,其中包含一些嵌套列表。我想知道是否有可能导入这个文本文件,以获得方括号中提到的列表顺序。

list(c(2,4,3,1,5), 
     c(6,2,4,3,6), 
     list(c(3), c(1,5,2)), 
     list(list(4), 8), 
     list(7), 
     list(list(c(8,9,1))))
#> [[1]]
#> [1] 2 4 3 1 5
#> 
#> [[2]]
#> [1] 6 2 4 3 6
#> 
#> [[3]]
#> [[3]][[1]]
#> [1] 3
#> 
#> [[3]][[2]]
#> [1] 1 5 2
#> 
#> 
#> [[4]]
#> [[4]][[1]]
#> [[4]][[1]][[1]]
#> [1] 4
#> 
#> 
#> [[4]][[2]]
#> [1] 8
#> 
#> 
#> [[5]]
#> [[5]][[1]]
#> [1] 7
#> 
#> 
#> [[6]]
#> [[6]][[1]]
#> [[6]][[1]][[1]]
#> [1] 8 9 1

创建于2022年12月14日,使用reprex v2.0.2
所以我想知道是否有可能读取上面的文本文件,并得到一个类似于所需输出的某种列出的结构?

wfsdck30

wfsdck301#

我们可以使用reticulate

library(reticulate)
py_run_string(paste("v1=", paste0("[", trimws(gsub("\n",",", text), whitespace = ","), "]")))
  • 输出
py$v1
[[1]]
[1] 2 4 3 1 5

[[2]]
[1] 6 2 4 3 6

[[3]]
[[3]][[1]]
[1] 3

[[3]][[2]]
[1] 1 5 2

[[4]]
[[4]][[1]]
[1] 4

[[4]][[2]]
[1] 8

[[5]]
[1] 7

[[6]]
[[6]][[1]]
[1] 8 9 1

或者另一个选择是

library(jsonlite)
lapply(setdiff(strsplit(text, "\n")[[1]], ""), fromJSON)

相关问题