[问题] 自写的函数无法应用在跑多笔资料

楼主: 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