我正在从文件导入列。该列使用collect_list函数形成。所以每个条目如下所示:
[1,5,10]
[27,30,1,33,40]
[1,2,8,20,30,50,...]
我正在尝试将此列读入R并将每行转换为列表。当我读到时,我会在表格的每一行都得到一个字符串:
"[1,5,10]"
如何将此列读入列表?谢谢!
答案 0 :(得分:4)
有效地传输JSON,可以这样导入:
text <- '[1,5,10]
[27,30,1,33,40]
[1,2,8,20,30,50]'
l <- jsonlite::stream_in(textConnection(text), simplifyDataFrame = FALSE)
str(l)
#> List of 3
#> $ : int [1:3] 1 5 10
#> $ : int [1:5] 27 30 1 33 40
#> $ : int [1:6] 1 2 8 20 30 50
答案 1 :(得分:0)
您想使用str_split
包中的stringr
。如果df
是您的数据框,data
是变量名称:
library("stringr")
df$data = gsub(pattern = "(\\[|\\])", replacement = "", x = df$x)
list = str_split(string = df$data, pattern = ",")
答案 2 :(得分:0)
不确定您的确切想法,但是如果您将数据导入到
data.frame并希望有一个包含列表值的列,您可以使用strsplit
:
dd = structure(list(x = c("[1,5,10]", "[27,30,1,33,40]", "[1,2,8,20,30,50]")), .Names = c("x"), class = "data.frame", row.names = 1:3)
dd$y = strsplit(gsub('\\[|\\]', '', dd$x), ",")
如果您希望dd$y
包含数字数据,您也可以使用:
dd$y = lapply(strsplit(gsub('\\[|\\]', '', dd$x), ","), as.numeric)
输出:
> str(dd)
'data.frame': 3 obs. of 2 variables:
$ x: chr "[1,5,10]" "[27,30,1,33,40]" "[1,2,8,20,30,50]"
$ y:List of 3
..$ : num 1 5 10
..$ : num 27 30 1 33 40
..$ : num 1 2 8 20 30 50