将具有三个输入的自己的函数应用于数据框
Apply own function with three inputs to dataframe
我有通过图书馆发送邮件的功能,RDCOMClient
。我之前使用过它,两个输入都来自数据框,使用 purrr
.
中的 map2
函数
现在我已将函数扩展为包含三个输入,但我似乎无法将其正确应用于数据框。
我的数据是这样的:
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"
我有通过图书馆发送邮件的功能,RDCOMClient
。我之前使用过它,两个输入都来自数据框,使用 purrr
.
map2
函数
现在我已将函数扩展为包含三个输入,但我似乎无法将其正确应用于数据框。
我的数据是这样的:
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"