0

宿題のために 3 つの引数を取る関数を作成しようとしていますが、何度か試しましたがうまくいきません! いくつかのアドバイスや助けに感謝します:)

私はすでに以下を作成しました:

##### 1)
> raceIDs
[1] "GER" "SUI" "NZ2" "US1" "US2" "POR" "FRA" "AUS" "NZ1" "SWE"

##### 2)
#For each "raceIDs", there is a csv file which I have made a loop to read and created a list of data frames (assigned to the symbol "boatList")
#For example, if I select "NZ1" the output is:
> head(boatList[[9]]) #Only selected the first six lines as there is more than 30000 rows
  Boat       Date    Secs    LocalTime   SOG
1  NZ1 01:09:2013 38150.0 10:35:49.997 22.17
2  NZ1 01:09:2013 38150.2 10:35:50.197 22.19
3  NZ1 01:09:2013 38150.4 10:35:50.397 22.02
4  NZ1 01:09:2013 38150.6 10:35:50.597 21.90
5  NZ1 01:09:2013 38150.8 10:35:50.797 21.84
6  NZ1 01:09:2013 38151.0 10:35:50.997 21.95

##### 3)
# A matrix showing the race times for each raceIDs
> raceTimes
    start      finish    
GER "11:10:02" "11:35:05"
SUI "11:10:02" "11:35:22"
NZ2 "11:10:02" "11:34:12"
US1 "11:10:01" "11:33:29"
US2 "11:10:01" "11:36:05"
POR "11:10:02" "11:34:31"
FRA "11:10:02" "11:34:45"
AUS "11:10:03" "11:36:48"
NZ1 "11:10:01" "11:35:16"
SWE "11:10:03" "11:35:08"

私がする必要があるのは、「レース中」(開始時間と終了時間の間) のボートの平均速度 (SOG) を計算する必要があることです。

したがって、基本的には、次のような関数を作成する必要があります。

> meanRaceSpeed("NZ1", boatList, raceTimes)
[1] 18.32  

> meanRaceSpeed("US1", boatList, raceTimes)
[1] 17.23

これは私の宿題の最後の質問の 1 つで、完全に行き詰っています :(

どこから始めればいいのかもよくわかりません。

誰かアドバイスやサポートをお願いできますか?

4

2 に答える 2

0

これは宿題の質問であるため、直接回答することはおそらく誰にとっても役に立たないでしょう.

関数の詳細については、たとえばQuick-R / ユーザー定義関数を参照してください。

関数が何もせず、それらを連結して返す 3 つのパラメーターを持つ関数の例:

myfunc <- function(first, second, third) {
return(cat(first, second, third))
}

それを as として呼び出しmyfunc("foo","bar","baz")、結果として "foo bar baz" を取得できます。

于 2013-10-24T10:53:46.330 に答える
0

3 つの引数は相互に関連しているため、3 つの引数は必要ないと思います。つまり、ボートを指定すると、缶内のその位置boatListも指定でき、その位置もraceTimes指定できます。

ランダムなデータをシミュレートするのは少し面倒だったので、次の関数はテストしませんでしたが、役立つかもしれないと思います:

meanRaceSpeed <- function(x)  #`x` is the boat's name
 {
  start_time <- raceTimes$start[rownames(raceTimes) == x] 
  finish_time <- raceTimes$finish[rownames(raceTimes) == x]

  #which `LocalTime` is the first with `start_time`
  start_LocalTime <- min(grep(start_time, boatList[[x]]$LocalTime))
  #which `LocalTime` is the last with `finish _time`
  #(if you want the first `finish_time` change `max` with `min`)
  finish_LocalTime <- max(grep(finish_time, boatList[[x]]$LocalTime))

  #which `SOG`s contain all the `LocalTimes` between start and finish
  #take their `mean`
  mean(boatList[[x]]$SOG[start_LocalTime : finish_LocalTime])
 }

#for all boats, something like:
sapply(raceIDs, meanRaceSpeed)

申し訳ありませんが、私があなたの質問を誤解した場合は.

于 2013-10-24T11:11:51.687 に答える