R - 如何删除" c("从列表写入文件

时间:2015-05-31 03:29:28

标签: r

这是谷歌难以搜索的事情之一......

我有一个数据框:

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", "$"]}

2 个答案:

答案 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")