2015-11-20 132 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