在R中填充3D数组:如何避免强制列表



我已经预先分配了一个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!

有什么方法可以绕过这个并正常填充数组吗?

谢谢你的建议!

试试这个:

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.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'

相关内容

  • 没有找到相关文章

最新更新