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

作者: studioA (understand?)   2023-10-13 13:40:51
[問題類型]:
程式諮詢(我想用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)
[關鍵字]:
作者: hohiyan (海洋)   2023-10-13 14:28:00
有兩個input arguments,你需要的是 purrr::map2DT %>% mutate(money = map2(datetime, KW, ETC2023))

Links booklink

Contact Us: admin [ a t ] ucptt.com