2011-10-21 54 views
1

期待學習函數寫作。我有在下面的(例如)佈置數據:用矢量定義答案的函數

Genus Species Wing Tail 
A  X  10.5 20.3 
A  Y  10.7 20.7 
B  XX 15.2 22.5 
B  XY 15.5 24 

我計算方差用於使用方程給定的性狀:

sqrt(max(Wing) - min (Wing)) 

其中我總結所有特徵。

所以,我可以寫下面的功能,所以總的數據集和方差:

variance<- function(data){ 
t <- sqrt(max(Tail)-min(Tail)) 
w <- sqrt(max(Wing)-min(Wing)) 
x <- sum(t,w) 
x 
} 

但我can'twork如何生成給我輸出的響應,其中這樣的結果是依賴於屬。所以我期待產生一個輸出,如:

Genus A Genus B 
    2.345  3.456 
+0

啊抱歉,沒有意識到該功能 –

+0

而隨機變量的方差不是範圍的平方根。 – 2011-10-21 21:15:52

+1

爲了增加Jack M.所說的話:你需要學習更多的數學知識,並花時間閱讀任何優秀的在線「R介紹和教程」頁面。如果你真的沒有停下來認爲R將會有一個Variance和Std_deviation函數,那麼你有點失去了整個觀點。 –

回答

3

我將給你的函數一個新的名字,因爲把它稱爲「方差」是錯誤的。我希望你能忽略這一點。我們可以將數據幀對象

dput(dfrm) 
structure(list(Genus = structure(c(1L, 1L, 2L, 2L), .Label = c("A", 
"B"), class = "factor"), Species = structure(c(1L, 4L, 2L, 3L 
), .Label = c("X", "XX", "XY", "Y"), class = "factor"), Wing = c(10.5, 
10.7, 15.2, 15.5), Tail = c(20.3, 20.7, 22.5, 24)), .Names = c("Genus", 
"Species", "Wing", "Tail"), class = "data.frame", row.names = c(NA, 
-4L)) 

dev2<- function(df){ 
    t <- sqrt(max(df[["Tail"]])-min(df[["Tail"]])) 
    w <- sqrt(max(df[["Wing"]])-min(df[["Wing"]])) 
    x <- sum(t,w) 
    x 
    } 

現在用它來對全部數據框上工作的工作,使用分lapply戰略,經過屬值到DEV2函數確定原始數據幀的部分

lapply(split(dfrm, list(dfrm$Genus)), FUN = dev2) 
$A 
[1] 1.079669 

$B 
[1] 1.772467 
+0

非常感謝,很好的解決方案 –