-7

これが私のコードですが、アイリスを配列に変更するもっと簡単な方法はありますか?
要件:変更した場合、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れ、2番目の例ではに変換されます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 に答える