r - 将具有三个输入的自己的函数应用于数据框
问题描述
我有这个通过库发送邮件的功能,RDCOMClient
. 我之前使用过两个输入,两个输入都来自使用map2
函数 from的数据帧purrr
。
现在我已经将该函数扩展为包含三个输入,但我似乎无法将其正确应用于数据帧。
我的数据是这样的:
df <- data.frame(Name = c("Name 1", "Name 2"),
Old_mail = c("Old mail 1", "Old mail 2"),
New_mail = c("New mail 1", "New mail 2"))
我的功能:
library(RDCOMClient)
mail_fun <- function(name, old_mail, new_mail){
# Open Outlook
OutApp <- COMCreate("Outlook.Application")
# Create mail
outMail = OutApp$CreateItem(0)
# Set receiver
outMail[["To"]] = as.character(new_mail)
# Set subject
outMail[["subject"]] = "Some subject"
# Set body
outMail[["body"]] = paste(
"Dear ", name,
" \n \nBla bla bla", old_mail, "bla bla bla", sep="")
# Send mail
outMail$Send()
# Pause for a second
Sys.sleep(1)
}
现在我想将函数应用到每一行,这样Name 1
,Old mail 1
和分别New mail 1
用于name
,old_mail
和new_mail
, 用于第一次迭代等等。
据我所知,我必须使用该pmap
功能。我只是不知道怎么做。
提前致谢!
真挚地,
埃米尔·布利彻
解决方案
函数参数名称应与数据框列名称匹配
COM <- function(Name, Old_mail, New_mail) {
#browser()
paste(Name, Old_mail, New_mail)
}
purrr::pmap(df, COM)
[[1]]
[1] "Name 1 Old mail 1 New mail 1"
[[2]]
[1] "Name 2 Old mail 2 New mail 2"
推荐阅读
- machine-learning - VC Dimension 和 PAC 学习
- java - Spring Boot @Transactional 和 @RestController
- azure - Azure 部署槽交换 EF 核心更新数据库
- python - Python 中使用 NumPy 的回归神经网络
- r - 使用带有 grid.arrange 的 ggmultiplot 对象
- python - 如何使用值列表在数据框中查找相同的值
- postgresql - Postgresql如何将用户定义的类型和它的底层bytea保存在同一个表中?
- vue.js - 如何使用 Vuex 向状态数组对象添加新值?
- node.js - 来自nodejs + elasrticsearch github repo的此错误消息“错误:找不到模块'../models'”的原因是什么
- reactjs - ReactJS useEffect 没有在变量上触发,并且 lint 抱怨在不同的钩子中缺少依赖项