簡體   English   中英

如何使用此數據創建矩陣

[英]How to create a matrix using this data

我在做作業/作業時遇到問題,如果有人願意幫助您,我將不勝感激:)

我有一個名為raceIDs的文件(看起來像這樣):

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

我還創建了一個函數:

getTimes()

例如,如果我輸入:

> getTimes("GER")
[1] "11:10:02" "11:35:05"  #Shows the starting and finishing times

我在這里要做的是創建一個矩陣,顯示所有國家/地區的開始和結束時間。

例如,我應該得到以下結果的矩陣:

> raceTimes
    start        finish
GER "11:10:02"   "11:35:05"
SUI "11:10:02"   "11:35:22"
#and so on....

我的嘗試:

> GER <- getTimes("GER")
> SUI <- getTimes("SUI")
> NZ2 <- getTimes("NZ2")
> US1 <- getTimes("US1")
> US2 <- getTimes("US2")
> POR <- getTimes("POR")
> FRA <- getTimes("FRA")
> AUS <- getTimes("AUS")
> NZ1 <- getTimes("NZ1")
> SWE <- getTimes("SWE")

> allTimes<-c(GER, SUI, NZ2, US1, US2, POR, FRA, AUS, NZ1, SWE)
> raceTimes <- matrix(allTimes, ncol=2)
> rownames(raceTimes) <- paste(raceIDs)
> colnames(raceTimes) <- c("start", "finish")

> raceTimes
    start      finish    
GER "11:10:02" "11:10:02"
SUI "11:35:05" "11:34:31"
NZ2 "11:10:02" "11:10:02"
US1 "11:35:22" "11:34:45"
US2 "11:10:02" "11:10:03"
POR "11:34:12" "11:36:48"
FRA "11:10:01" "11:10:01"
AUS "11:33:29" "11:35:16"
NZ1 "11:10:01" "11:10:03"
SWE "11:36:05" "11:35:08"

如您在上面看到的,我的矩陣不正確。 例如,“ GER”(“ 11:35:05”)的完成結果顯示為“ SUI”的開始時間。

有什么建議嗎?

常見錯誤:如矢量手冊所述指出 ,用向量創建矩陣或數組將按列順序進行:

數據向量中的值以與FORTRAN中出現的順序相同的順序給出數組中的值,即“列主要順序”,第一個下標移動最快,最后一個下標最慢。

這可以通過觀察

matrix(1:4, ncol = 2)

#      [,1] [,2]
# [1,]    1    3
# [2,]    2    4

最直接的解決方法是在matrix調用中添加byrow = TRUE

matrix(1:4, ncol = 2, byrow = TRUE)

#      [,1] [,2]
# [1,]    1    2
# [2,]    3    4

raceTimes <- matrix(allTimes, ncol=2, byrow = TRUE)

一個更好的主意是在上游使用rbind進行連接,而無需將向量串在一起:

raceTimes <- rbind(GER, SUI, NZ2, US1, US2, POR, FRA, AUS, NZ1, SWE)

更好的方法是使用循環和sapply代替打字getTimes在每個元素raceID

raceTimes <- sapply(raceID, getTimes)
raceTimes <- t(raceTimes)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM