我已经预先分配了一个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$column
或dataframe[,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'