我是新來編寫函數,我不知道從哪裏開始。以下是本例中名爲m1的數據框的子集。我想編寫一個函數,通過數據集並通過數字提取長度和深度信息。例如,如果它遇到數字1,它將獲取長度和深度,並將它們插入新數據幀或矢量的第一行。如果數字等於2等,那麼它也會這樣。編寫用戶定義函數
length number depth
[1,] 109 1 10
[2,] 109 1 10
[3,] 109 1 10
[4,] 109 1 10
[5,] 109 1 10
[6,] 109 1 10
[7,] 109 1 10
[8,] 109 1 10
[9,] 109 1 10
[10,] 109 1 10
[11,] 109 1 10
[12,] 109 1 10
[13,] 107 2 10
[14,] 107 2 10
[15,] 107 2 10
[16,] 107 2 10
[17,] 107 2 10
[18,] 107 2 10
[19,] 107 2 10
[20,] 107 2 10
這是在寫一個函數試圖獲得上述的輸出,如果數量等於1
length.fun=function(x)
{
lengths=numeric()
depth=numeric()
if (x[2]==1)
{
lengths=x[1]
depth=x[3]
}
return(cbind(depth,lengths))
}
length.fun(m1)
但是,我得到的作爲輸出是這樣的:
length.fun(m1)
depth lengths
任何幫助,非常感謝。 感謝
它看起來不像data.frame。 class(m1)'的輸出是什麼? – Roland 2013-04-24 14:17:35
你的目標是什麼?帶有兩行的data.frame,一個用於「深度」,一個用於「長度」。或者多行,每個'''中的每個唯一元素都有一行。或者對於多個行,'number'中的每個唯一元素有兩個,''長度'一個,'深度'一個?請稍微詳細一點。 – 2013-04-24 14:25:18
user1997414,我的理解是你想爲每個數值創建單獨的數據幀(或矩陣)。這是真的。如果這是真的,也許你可以提供一些關於你爲什麼要這樣做的背景信息? – Arhopala 2013-04-24 14:34:19