これが私のコードですが、アイリスを配列に変更するもっと簡単な方法はありますか?
要件:変更した場合、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]}}
これが私のコードですが、アイリスを配列に変更するもっと簡単な方法はありますか?
要件:変更した場合、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]}}
これは本当に珍しいことです。
いいえ、それは異常よりも悪いです。たぶん悪いです。すべてのデータが単一のクラスである場合、行列と配列は有用で、適切で、非常に高速です。クラスが混在している場合は、代わりにデータフレームを使用してください。
しかし、ここに行きます。最初の例では、すべてのデータがに変換さ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