[英]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) { ... }
ApproveAssignment
和RejectAssignment
內部循環遍歷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.