基本应用于 R 数据帧(也可能用于循环)

Basic Apply in R dataframe (possible for loops as well)

我正在尝试对基本数据框做一些工作,您可以在下面看到它:

> print(thisEmailList)
          user_name            user_email
1         Test, Joe    joejoejt@gmeel.com
2 adminintor, Admin jimmyadminj@gmeel.com

我想给这些人发一些电子邮件,但我不确定什么是最好的方法。我有一个函数 sendmail,它似乎可以很好地处理字符串,但我该如何迭代或将此函数应用于我的数据框? 我已经在 lapply 中尝试了许多不同的策略、for 循环和函数,但我似乎无法让它以与数据库输出相同的方式出现。我似乎总能得到这样的效果:

          user_name
1         Test, Joe
2 adminintor, Admin
             user_email
1    joejoejt@gmeel.com
2 jimmyadminj@gmeel.com

我将 thisEmailList 视为行和列,我想遍历行,而不是列。 R 在思考方式上有很大的不同,我只是不明白语法,或者我如何向上面的 每一行 发送电子邮件。

更新 1

我想我终于想通了,反正是 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"

您想在行模式下使用基本 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.