2015-11-20 133 views
0

我有两个数组来自postgreSQL数据库,如下所示。将两个数组转换为R中的一个数据帧

iarray 
{9.467182035,9.252423958,9.179368178,9.142931845,9.118895803,9.098669713,9.093398102,9.092035392,9.091328028,9.090594437,9.090000456,9.089253543......keeps going on} 
varray 
{-1.025945126,-0.791203874,-0.506481774,-0.255416444,-0.028424464,0.188855034,0.390787963,0.579327969,0.761521769 ...keeps going on} 

两个数组都有相同数量的条目。我想将它们转换为数据帧,因此我可以绘制出一个比我更好的图形 我该如何继续?

我试图n<-gsub("^\\{+(.+)\\}+$", '\\1', iarray)以除去{}和

n2 <- strsplit(n, ",")以除去逗号。

+1

这看起来有点像json吗? – bramtayl

回答

3

假设你正在iarray &变长数组作为字符串:

iarray = "{9.467182035,9.252423958,9.179368178,9.142931845}" 
varray = "{-1.025945126,-0.791203874,-0.506481774,-0.255416444}" 

n<-gsub("^\\{+(.+)\\}+$", '\\1', iarray) 
n1 <- strsplit(n,",") 
n1 <- unlist(n1) 
df <- as.data.frame(n1) 
n<-gsub("^\\{+(.+)\\}+$", '\\1', varray) 
n2 <- strsplit(n,",") 
n2 <- unlist(n2) 

df <- cbind(df,n2) 
+0

@Nisal这是正确的方法。这里的诀窍是''取消'strsplit()'的输出以获得实际的字符向量。 –

0

这似乎是为数不多的时刻之一正确使用eval(parse())

df<-list(iarray,varray) 
df<-data.frame(lapply(df, 
    function(x) eval(parse(text=sub("\\}$",")",sub("^\\{","c(",x)))) 
)) 
names(df)<-c("iarray","varray") 

我们只是{(更换,添加c开始,iarrayvarray成为命令行来创建向量,我们parseeval