我试图在基本数据框架上做一些工作,你可以在下面看到:
> print(thisEmailList)
user_name user_email
1 Test, Joe joejoejt@gmeel.com
2 adminintor, Admin jimmyadminj@gmeel.com
我想向这些人发送一些电子邮件,但我不确定什么是最好的方法。我有一个函数sendmail,它似乎可以正常使用字符串,但是如何迭代或将此函数应用于我的数据帧? 我已经尝试了许多不同的技巧,for循环和lapply中的函数,但我似乎无法让它以与数据库发布相同的方式出现。我似乎总能得到这样的效果:
user_name
1 Test, Joe
2 adminintor, Admin
user_email
1 joejoejt@gmeel.com
2 jimmyadminj@gmeel.com
我认为thisEmailList是行和列,我想循环遍历行,而不是列。 R在如何思考方面有很大的不同,我只是没有得到语法,或者我如何向上面的每一行发送电子邮件。
我想我终于弄明白了,无论如何都是forloop。如果有人有一个没有涉及for循环的建议,那就太棒了。
for (i in 1:nrow(thisEmailList)){
#Note this is just for testing, the sendmailr part has never been an issue, just getting the row/columns to loop in the right order.
print(paste(thisEmailList[i,2], thisEmailList[i,1]))
}
[1] "joejoejt@gmeel.com Test, Joe"
[1] "jimmyadminj@gmeel.com adminintor, Admin"
答案 0 :(得分:2)
您希望在行模式下使用基本apply
函数(第二个参数为1):
apply(data.frame(thisEmailList$user_name, thisEmailList$user_email),
1,
function(x) {
# send email to user x[1]
# whose email address is x[2] )
})
您不能使用apply
内的常规数据框列引用,因此我创建了一个临时输入数据框,其第一列(x[1]
)是user_name
并且其第二列(x[2]
)是user_email
。