2013-03-15 58 views
0

我已經預先分配了一個3D數組,並嘗試用數據填充它。但是,每當我使用先前定義的data.frame串進行此操作時,數組會被神祕地轉換爲列表,這會弄亂所有內容。將data.frame collumn轉換爲向量不會有幫助。在R中填充3D數組:如何避免強制列表?

例子:

exampleArray <- array(dim=c(3,4,6)) 
exampleArray[2,3,] <- c(1:6) # direct filling works perfectly 

exampleArray 
str(exampleArray) # output as expected 

問題:

exampleArray <- array(dim=c(3,4,6)) 
exampleContent <- as.vector(as.data.frame(c(1:6))) 
exampleArray[2,3,] <- exampleContent # filling array from a data.frame column 
# no errors or warnings 

exampleArray  
str(exampleArray) # list-like output! 

有沒有什麼辦法可以解決這個問題,通常填補我的陣列?

感謝您的建議!

回答

1

試試這個:

exampleArray <- array(dim=c(3,4,6)) 
exampleContent <- as.data.frame(c(1:6)) 
> exampleContent[,1] 
[1] 1 2 3 4 5 6 
exampleArray[2,3,] <- exampleContent[,1] # take the desired column 
# no errors or warnings 
str(exampleArray) 
int [1:3, 1:4, 1:6] NA NA NA NA NA NA NA 1 NA NA ... 

你試圖在數組中插入數據幀,這是行不通的。您應該使用dataframe$columndataframe[,1]

此外,as.vector不會做任何as.vector(as.data.frame(c(1:6))),你as.vector(as.data.frame(c(1:6)))後很可能,雖然不工作:

as.vector(as.data.frame(c(1:6))) 
Error: (list) object cannot be coerced to type 'double' 
+0

好了,所以小「」使其中的差別!非常感謝你! – jgoldmann 2013-03-15 11:57:20