[問題] 自寫的函數無法應用在跑多筆資料

看板R_Language作者 (understand?)時間1年前 (2023/10/13 13:40), 編輯推噓1(101)
留言2則, 1人參與, 1年前最新討論串1/1
[問題類型]: 程式諮詢(我想用R 做某件事情,但是我不知道要怎麼用R 寫出來) [軟體熟悉度]: 使用者(已經有用R 做過不少作品) [問題敘述]: 我寫了一個簡單函數來計算每小時電費 函數確實可以單筆跑出 ,但如果遇到一次跑多筆資料時,只能用迴圈 無法寫到類似套件那種,用mutate可以新增一整欄資料,請問函數要如何修正比較好 下方函數程式引用的xls檔我放在 https://lurl.cc/RJjRwa [程式範例]: ETC2023<-function(datetime, KW,sheet="高壓三段", path = "D:/R_ETC_2023.xlsx"){ library(readxl) T2023 <- read_excel(path, sheet = sheet ,col_types = c("text", "numeric") ) x <- as.character(datetime) Umoney <- as.numeric(as.matrix(T2023[T2023$DateTime==x,"unit"])) * KW return(Umoney) } ETC2023("2023052019",12) #成功 ETC2023("2023103122",10) #成功 # 轉成data.frame DT <- data.frame(datetime =c("2023052019","2023103122"),KW = c(12,10)) DT$money <- ETC2023(DT$datetime,DT$KW) ##錯誤 DT %>% mutate("money"= ETC2023(datetime,KW)) ##錯誤 #成功 for(i in 1:2){ DT[i,"money"] <- ETC2023(DT[i,1],DT[i,2]) } [環境敘述]: 請提供 sessionInfo() 的輸出結果, R version 4.2.3 (2023-03-15 ucrt) Platform: x86_64-w64-mingw32/x64 (64-bit) Running under: Windows 10 x64 (build 22621) [關鍵字]: -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 39.9.62.156 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1697175653.A.671.html

10/13 14:28, 1年前 , 1F
有兩個input arguments,你需要的是 purrr::map2
10/13 14:28, 1F

10/13 14:29, 1年前 , 2F
DT %>% mutate(money = map2(datetime, KW, ETC2023))
10/13 14:29, 2F
文章代碼(AID): #1bADXbPn (R_Language)
文章代碼(AID): #1bADXbPn (R_Language)