-7
這裏是我的代碼,是否有更簡單的方法將iris更改爲數組?
要求:當你改變了它,d [2,3] =光圈[2,3] = 1.4將data.frame更改爲數組
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]}}
這裏是我的代碼,是否有更簡單的方法將iris更改爲數組?
要求:當你改變了它,d [2,3] =光圈[2,3] = 1.4將data.frame更改爲數組
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
,第二個轉換爲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
+1解釋爲什麼這是一個壞主意*和*給出答案 – 2012-08-10 17:35:58
這是你的第三個問題上非常相似的主題,如果你給的你正在嘗試做的(例如,爲什麼你想你的數據更好的解釋在一個數組中,而不是data.frame),那麼可能會更容易提供幫助。 – mnel 2012-08-10 00:36:47
數組中的所有條目必須是相同的類型。但最後一列「虹膜」是一個因素。這裏有一些可能有用的想法:as.matrix(虹膜),as.matrix(虹膜[,-5]),'data.matrix(虹膜)'。 – bdemarest 2012-08-10 00:37:29
我想更好地瞭解R。 – 2012-08-10 10:26:03