0

我已经预先分配了一个 3D 数组并尝试用数据填充它。但是,每当我使用先前定义的 data.frame 列执行此操作时,数组就会神秘地转换为列表,这会搞砸一切。将 data.frame 列转换为向量无济于事。

例子:

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!

有什么办法可以解决这个问题并正常填满我的数组吗?

感谢您的建议!

4

1 回答 1

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$columnordataframe[,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'
于 2013-03-15T11:46:34.040 回答