簡體   English   中英

在R中使用帶有if else語句的循環

[英]Use for loop with if else statement in R

我試圖用if else語句創建一個for循環。 我的代碼看起來如下:

for(i in 1:length(assignmentlist[,1]))
{if assignmentlist$Approve[i]=="1"
      {ApproveAssignment(assignments=assignmentlist$AssignmentId[i],sandbox=T)}
  else {RejectAssignment(assignments=assignmentlist$AssignmentId[i],sandbox=T)}}

而“任務清單”如下所示

> assignmentlist
   AssignmentId    Approve                   
1          5135          1 
2          8963          0
3          6823          0
4          3287          1

基本上我想對“Approve”列中具有“1”的所有條目執行“ApproveAssignment”函數。 問題是,我想用相同的索引(同一I)的ApproveAssignment函數內部 不幸的是,這似乎不起作用。 有沒有人有溫和的方法來避免這個問題?

編輯:批准分配功能是一個函數,它通過API批准Mechanical Turk的特定分配,並且是MTurkR包的一部分

任何幫助你都會非常感激!

我不明白,因為youy循環的“i”可以直接用在你的函數中:

ApproveAssignment <- function(assignments=NULL, sandbox=NULL) cat(i, "was approved\n")
RejectAssignment <- function(assignments=NULL, sandbox=NULL) cat(i, "was rejected\n")

for(i in 1:length(assignmentlist[,1])){
  if (assignmentlist$Approve[i]=="1")
    ApproveAssignment(assignments=assignmentlist$AssignmentId[i],sandbox=T)
  else
    RejectAssignment(assignments=assignmentlist$AssignmentId[i],sandbox=T)
    }

如果,我假設我想在其中使用它,您是ApproveAssignment的作者,您應該將索引作為附加參數傳遞給函數。

ApproveAssignment <- function(assignments, sandbox, index) { ... }

ApproveAssignmentRejectAssignment內部循環遍歷AssignmentIds向量,以對API進行特定於任務的調用,因此您只需向它提供一個AssignmentIds向量,不需要循環或任何條件。

ApproveAssignment(assignments=assignmentlist$AssignmentId[assignmentlist$Approve==1],sandbox=T)
RejectAssignment(assignments=assignmentlist$AssignmentId[!assignmentlist$Approve==1],sandbox=T)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM