R data.table 使用 tstrsplit 分解列

我以以下data.table为例

df = data.table(id = c(1, 2, 3), val=c("['hello', 'world']", "['hi']", "['so', 'there']"))

我想将像对象一样的列表拆分为id重复的单独行。所以data.table我想要的预期如下

df2 = data.table(id = c(1, 1, 2, 3, 3), val=c("hello", "world", "hi", "so", "there"))

我尝试了以下

df[, c("test") := tstrsplit(val, ",", fixed=TRUE)]

但是,我收到以下错误

有人可以指出我在这里做错了什么吗?提前致谢。

回答

从您拥有的数据结构来看,您似乎拥有一个 python 数据集。您可以reticulate为此使用:

library(reticulate)
ast <- import('ast')
df_python <- r_to_py(df)
df_python$assign(val = df_python$val$transform(ast$literal_eval))$explode('val')
id    val
0  1.0  hello
0  1.0  world
1  2.0     hi
2  3.0     so
2  3.0  there

你可以直接这样做:

df[, .(val = tstrsplit(gsub('[^a-z,]', '',val), ',')), by = 'id']
id   val
1:  1 hello
2:  1 world
3:  2    hi
4:  3    so
5:  3 there

以上是R data.table 使用 tstrsplit 分解列的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>