我是R的新手,我的任务是创建一个功能来比较和翻译从模拟网络挖掘的数据,以分析用户模式。
R app应该计算所使用的每个协议的总和,总和的平均值和总和的标准偏差。该功能目前是:
> total[total == 0] <- NA
res2 <- do.call(`data.frame`,
aggregate(values~ind, stack(total),
FUN=function(x) c(Total=sum(x, na.rm=FALSE), Mean=mean(x) SD=sd(x)))
如果用户的协议计数在&#34之内,则使用另一个函数将值转换为1; Mean - 3sd&lt;计数&lt;平均值+ 3sd&#34;
> nm1 <- setdiff(colnames(total), "row.names")
output[,nm1] <-(res2$Mean-3SD[col(total[,nm1])] >total[,nm1] >res2$Mean-3SD[col(total[,nm1])])+0
这是比较正确的方法吗?
由于
修改:
在运行代码时,它会显示:
Error: unexpected symbol in "output[,nm1] <-(res2$Mean-3SD"
答案 0 :(得分:1)
R不理解A < B < C
之类的双重不等式为<
,其族是二元运算符。因此,上述内容应转换为A < B & B < C
以在语法上有效。
现在,您没有提供可重现的示例,但在您的情况下,行
output[,nm1] <- (res2$Mean-3SD[col(total[,nm1])] > total[,nm1] > res2$Mean-3SD[col(total[,nm1])])+0
应该是
output[,nm1] <-
(res2$Mean - 3*SD[col(total[,nm1])] > total[,nm1] &
total[,nm1] > res2$Mean - 3*SD[col(total[,nm1])]) + 0
据我所知。这有帮助吗?
编辑:另外,正如RomanLuštrik的评论中所述,您还应该记住显式乘法*
。