如何在 R 中循环遍历带有列表的数据框列?

vsx99

我需要能够从数据框的各个列中提取值并将它们插入到函数/循环中的特定位置。

我的数据框:它是“新起点”(新员工)的 df

id <- c(115, 115)
f_name <- c("John", "Mary")
l_name <- c("Black", "White")
gender <- c("Male", "Female")
s_date <- c("2021-03-01", "2021-03-01")
ns_df <- data.frame(id, f_name, l_name, gender, s_date)

这给出了以下内容:

   id f_name l_name gender     s_date
1 115   John  Black   Male 2021-03-01
2 115   Mary  White Female 2021-03-01

然后我想获取每个列值并将它们推送到 POST 请求中的相应位置,如下所示:

POST(url = myurl, config = authenticate(user = login,
                                        password = pw,
                                        type = "basic"),
     body = list(APIKey = my_key, # keep the same
                 Action = "CreateNewEmployee", # keep the same
                 EmployeeId = "id", # loop through ids
                 FirstName = "f_name", # loop through first names
                 LastName = "l_name", # look through last names
                 Gender = "gender", # loop through genders
                 StartDate = "s_date" #loop through start dates
       
     ),
     encode = "json")

期望的结果如下:

  1. 创建一个带有新启动器的数据框(可以是 0 行,在这种情况下没有动作跟随)。如果超过 0 行,则继续
  2. 根据行数,启动循环以遍历每一行并提取属性,以便每个属性都进入构成 POST 请求正文的列表的相应部分
  3. 为新的 starters 数据框中的每一行发送一个 POST 请求

我知道我需要使用一个应用函数或一个循环来运行数据框并准备 POST 请求的列表/正文,但我不确定如何将它们拼凑在一起!任何帮助将不胜感激,谢谢大家。

罗纳克·沙阿

您可以将代码放入一个函数中,并使用任何 apply 命令将其应用于每一行。

lapply(seq(nrow(ns_df)), function(i) {
  
  POST(url = myurl, config = authenticate(user = login,
                                          password = pw,
                                          type = "basic"),
       body = list(APIKey = my_key, # keep the same
                   Action = "CreateNewEmployee", # keep the same
                   EmployeeId = ns_df[i, "id"], # loop through ids
                   FirstName = ns_df[i, "f_name"], # loop through first names
                   LastName = ns_df[i, "l_name"], # look through last names
                   Gender = ns_df[i, "gender"], # loop through genders
                   StartDate = ns_df[i, "s_date"] #loop through start dates
                   
       ), encode = "json")
}) -> result

result

如果每个POST请求的输出是一个数据帧,您可能需要do.call(rbind, result)将结果合并到一个数据帧中。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

R:如何在循环内绑定嵌套循环的所有数据框的特定列?

如何按列(每个数据框有不同的编号)排列 R 中的数据框列表?

如何在 R 数据查看器中显示带有因子的数据框?

在 R 中,如何在新数据框中循环遍历 csv 文件和线性回归的安全输出?

如何在 r 中创建带有嵌套 forloops 的数据框

如何在数据框中创建映射到R中的列表的列?

如何在R中循环使用列表数据类型?

如何旋转R中带有节和子节的列组成的数据框

循环遍历数据框列表并更改 R 中的列名

如何从 r 中的列的 t 检验循环创建具有 p 值的数据框?

如何在R的数据框中计算列表列的每一列中的元素

如何对R中列表中的所有数据框的列重新排序?

如何在R中动态选择数据框中的列

如何在R中的数据框中合并两列?

如何在数据框中添加带有for循环的列?

如何在 R 的数据框中添加新列并使用现有列?

在R中的数据框中循环遍历多列

如果我创建的命名列表与数据框的列同名,如何在r中添加数据框的行?

如何在R的数据框中创建连续的序列列?

如何在R中的函数内索引数据框列

如何在 R 数据框中缩放列的段?

如何在R的数据框中插入行较少的列

如何编写for循环以遍历R中的列

如何在 R 中着色数据框

如何在R中重组数据框

如何在R中循环数据?

如何将数据框列表转换为具有新列的数据框在R中显示列表名称

如何通过循环遍历 R 中的垂直数据框来创建多个图?

如何在R中创建具有动态列长度的数据框