作为我第一次在SO上提问,我事先为任何格式不当的问题道歉。
我对R非常陌生,正在尝试创建一个函数,该函数将在另一列中的运行总数达到或超过给定值时返回数据帧列的行值(运行总和开始的行也是参数之一)。
例如,给定以下数据框,如果给定起始参数x = 3和停止参数y = 17,则函数应返回5(y的总和> = 17的行的x值)。
我对R非常陌生,正在尝试创建一个函数,该函数将在另一列中的运行总数达到或超过给定值时返回数据帧列的行值(运行总和开始的行也是参数之一)。
例如,给定以下数据框,如果给定起始参数x = 3和停止参数y = 17,则函数应返回5(y的总和> = 17的行的x值)。
X Y
1 5
2 10
3 5
4 10
5 5
6 10
7 5
8 10
我目前编写的函数返回了正确的答案,但我相信有更'R-ish'的方法来完成这个任务,而不是使用循环和临时变量增加,我希望学习正确的方法,而不是形成以后必须纠正的坏习惯。
一个非常简化的版本的函数:
myFunction<-function(DataFrame,StartRow,Total){
df<-DataFrame[DataFrame[[1]] >= StartRow,]
i<-0
j<-0
while (j < Total) {
i<-i+1
j<-sum(df[[2]][1:i])
}
x<-df[[1]][i]
return(x)
}
while
或者break
循环可能确实会有帮助,因为你想要找到事件的第一次出现(特别是在大向量和早期出现的情况下)。此外,你也可以避免反复计算j
,而是在循环中递增它。 - alexis_laz