-7

这是我的代码,是否有更简单的方法将 iris 更改为数组?
要求:当你改变它时,d[2,3]=iris[2,3]=1.4

data(iris)
r=nrow(iris)
c=ncol(iris)
d=array(0,dim=c(r,c))
for (i in 1:r){
  for (j in 1:c){
      d[i,j]=iris[i,j]}}
4

1 回答 1

6

这是一件非常不寻常的事情。

不,这比不寻常更糟糕。这可能只是坏事。如果所有数据都属于一个类,矩阵和数组是有用的、合适的并且非常快。如果您有混合类,请改用数据框。

但是给你。在第一个示例中,您的所有数据都转换为character,在第二个示例中为numeric

x <- as.array(as.matrix(iris))

head(x)
     Sepal.Length Sepal.Width Petal.Length Petal.Width Species 
[1,] "5.1"        "3.5"       "1.4"        "0.2"       "setosa"
[2,] "4.9"        "3.0"       "1.4"        "0.2"       "setosa"
[3,] "4.7"        "3.2"       "1.3"        "0.2"       "setosa"
[4,] "4.6"        "3.1"       "1.5"        "0.2"       "setosa"
[5,] "5.0"        "3.6"       "1.4"        "0.2"       "setosa"
[6,] "5.4"        "3.9"       "1.7"        "0.4"       "setosa"

或者...

x <- array(unlist(iris), dim=c(150, 5), dimnames=list(NULL, names(iris)))

head(x)
     Sepal.Length Sepal.Width Petal.Length Petal.Width Species
[1,]          5.1         3.5          1.4         0.2       1
[2,]          4.9         3.0          1.4         0.2       1
[3,]          4.7         3.2          1.3         0.2       1
[4,]          4.6         3.1          1.5         0.2       1
[5,]          5.0         3.6          1.4         0.2       1
[6,]          5.4         3.9          1.7         0.4       1
于 2012-08-10T06:46:36.910 回答