这是谷歌难以搜索的事情之一......
我有一个数据框:
x=c("a", "b", "c")
y=list(c(1,2,3), c("f","g"), c(1,"r","$"))
df = as.data.frame(x)
df$y = y
我将其转换为此类并将其打印到.txt
:
p = sprintf('{"name":"%s", "import": [%s]}', df$x, df$y)
write(p, "p.txt")
使用c()
表示法打印输出:
{"name":"a", "import": [c(1, 2, 3)]}
{"name":"b", "import": [c("f", "g")]}
{"name":"c", "import": [c("1", "r", "$")]}
如何删除它,使其打印如下:
{"name":"a", "import": [1, 2, 3]}
{"name":"b", "import": ["f", "g"]}
{"name":"c", "import": ["1", "r", "$"]}
答案 0 :(得分:2)
测试:
write(gsub("\\[c", "[", p), "p.txt")
{"name":"a", "import": [(1, 2, 3)]}
{"name":"b", "import": [("f", "g")]}
{"name":"c", "import": [("1", "r", "$")]}
同时删除parens:
write(gsub("[()]", "",gsub("\\[c", "[", p)), "p.txt")
{"name":"a", "import": [1, 2, 3]}
{"name":"b", "import": ["f", "g"]}
{"name":"c", "import": ["1", "r", "$"]}
答案 1 :(得分:1)
这看起来相当简单,你只需要使用字符串替换。例如:
x=c("a", "b", "c")
y=list(c(1,2,3), c("f","g"), c(1,"r","$"))
df = as.data.frame(x)
df$y = y
p = sprintf('{"name":"%s", "import": [%s]}', df$x, df$y)
p <- gsub("\\[c\\("," \\[",p)
p <- gsub("\\)\\]","\\]",p)
write(p, "p.txt")