用于处理数据段的函数的For循环

用于处理数据段的函数的For循环,r,R,我有一个样本数据集,如下所示: Out= 0.03&(最大值(Dist_Out[Movement_Out!=“non-moveing”])=0.23&(总和(Dist_Out[Movement_Out!) “非移动”])>=11.92){ 行为首先,您需要将数据转换为数字类型,因为它们存储为因子: Out[,-6] <- as.data.frame(sapply(Out[,-6], function(x) as.numeric(as.character(x)))) 对于提供的数据帧,看起

我有一个样本数据集,如下所示:

Out=
0.03&(最大值(Dist_Out[Movement_Out!=“non-moveing”])=0.23&(总和(Dist_Out[Movement_Out!)
“非移动”])>=11.92){

行为首先,您需要将数据转换为数字类型,因为它们存储为因子:

Out[,-6] <- as.data.frame(sapply(Out[,-6], function(x) as.numeric(as.character(x))))

对于提供的数据帧,看起来每个5行段都处于静止状态。这很容易确认,因为
max(Out$Speed\u Out)
为0.465,意味着没有段在行走,而
sum(Out$Dist\u Out)
为8.94,意味着没有分段在移动。

hm,所有列都是因子。对吗?你不能从因子中计算平均值。请编辑你的数据。谢谢!我现在让它工作了。但是它在完整数据集和完整函数中给出了此警告:In max(Dist_Out[Movement_Out!=“non moving”]):max没有未丢失的参数;返回-Inf。另外,我如何编辑代码以使其在整个数据集上工作?类似于:sappy(split(Out,rep(1:length(Out),each=32)),do.call,what=JRip)??@HoffiCoffi这意味着你有一个子集,其中每种运动类型都是非运动的——你想如何处理这种情况?啊,我明白了,是的,当动物躺下时会发生这种情况,所以数据会预测非运动。我希望它尽可能正常工作,所以功能应该预测休息。事实上,我得到的结果是正确的如果有一系列不移动的情况出现,则会出现“警告()”,仅此而已!有没有办法停止此操作?谢谢。@HoffiCoffi我会将if语句中的中间条件替换为
mean(Acceleration\u Out[Acceleration\u Out>0])>=0.03&&sum(Movement\u Out==“non-moving”)>0&&max(Dist\u Out[Movement\u Out!=“非移动”])=0.23&&sum(Dist_Out[Movement_Out!=“非移动”])>=11.92
JRip <- function (Dist_Out, Speed_Out, Acceleration_Out, Absolute_Heading_Out, 
    Relative_Heading_Out, Movement_Out, Changes_Out, AccPosNeg_Out, 
    AccChange_Out) 
{
    if (max(Speed_Out) >= 2.45) {
        Behaviour <- "walking"
    }
    else if (mean(Acceleration_Out[Acceleration_Out > 0]) >= 
        0.03 & (max(Dist_Out[Movement_Out != "non-moving"]) <= 
        2.17 & (mean(Speed_Out) >= 0.23 & (sum(Dist_Out[Movement_Out != 
        "non-moving"]) >= 11.92)))) {
        Behaviour <- "grazing"
    }
    else Behaviour <- "resting"
    return(Behaviour)
}
Out[,-6] <- as.data.frame(sapply(Out[,-6], function(x) as.numeric(as.character(x))))
sapply(split(Out, rep(1:4, each=5)), do.call, what=JRip)
#         1         2         3         4 
# "resting" "resting" "resting" "resting"