我正在尝试创建一个for循环,其中包含一个if else语句。我的代码如下所示:
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
基本上,我想对所有在“批准”库中有"1“的条目执行"ApproveAssignment”函数。问题是,我希望在() ApproveAssignment函数中使用相同的索引(相同的i)。不幸的是,这似乎行不通。有没有人有温和的方法来避免这个问题?
编辑:批准分配函数是一个函数,它在API上批准机械Turk的特定分配,并且是MTurkR包的一部分。
任何帮助你都会非常感激的!
发布于 2013-04-09 13:39:44
我不明白这一点,因为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)
}
发布于 2013-04-09 13:32:49
如果我假设您想在其中使用它,那么如果您是ApproveAssignment
的作者,那么应该将索引作为附加参数交给函数。
ApproveAssignment <- function(assignments, sandbox, index) { ... }
发布于 2013-05-02 10:01:54
ApproveAssignment
和RejectAssignment
内部循环通过AssignmentIds向量对API进行赋值特定的调用,所以您所要做的就是给它一个AssignmentIds向量,而不需要循环或任何条件。
ApproveAssignment(assignments=assignmentlist$AssignmentId[assignmentlist$Approve==1],sandbox=T)
RejectAssignment(assignments=assignmentlist$AssignmentId[!assignmentlist$Approve==1],sandbox=T)
https://stackoverflow.com/questions/15903091
复制相似问题