R转换字符串<;列表>;列出

R转换字符串<;列表>;列出,r,string,list,file-read,R,String,List,File Read,我正在从文件导入一列。该列使用collect_list函数形成。因此,每个条目如下所示: [1,5,10] [27,30,1,33,40] [1,2,8,20,30,50,...] 我试图将这列读入R,并将每一行转换为一个列表。当我阅读时,表格的每一行都有一个字符串: "[1,5,10]" 我应该怎么做才能将此列读入列表?谢谢 您想使用stringr包中的stru-split。如果df是您的数据帧,data是变量名: library("stringr") df$data = gsub(pat

我正在从文件导入一列。该列使用collect_list函数形成。因此,每个条目如下所示:

[1,5,10]
[27,30,1,33,40]
[1,2,8,20,30,50,...]
我试图将这列读入R,并将每一行转换为一个列表。当我阅读时,表格的每一行都有一个字符串:

"[1,5,10]"

我应该怎么做才能将此列读入列表?谢谢

您想使用
stringr
包中的
stru-split
。如果
df
是您的数据帧,
data
是变量名:

library("stringr")
df$data = gsub(pattern = "(\\[|\\])", replacement = "", x = df$x)
list = str_split(string = df$data, pattern = ",")

不确定您的确切想法,但如果您将数据导入 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

这是一种有效的JSON流,可以这样导入:

text$:int[1:3]1 5 10
#>$:int[1:5]273013340
#>$:int[1:6]12 8 20 30 50