Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在R中使用apply族制作简单脚本_R_Dataframe_Apply_Lapply_Anomaly Detection - Fatal编程技术网

如何在R中使用apply族制作简单脚本

如何在R中使用apply族制作简单脚本,r,dataframe,apply,lapply,anomaly-detection,R,Dataframe,Apply,Lapply,Anomaly Detection,我需要使用R进行异常检测,但我认为我的代码非常长。我需要得到“查找异常”和“总异常”。有人能用apply family简化吗?。这是密码 #Library library(AnomalyDetection) # Data Preparation set.seed(1) datex <- seq(as.Date("2017/01/01"), as.Date("2019/01/01"), by = "day") x1 <- rf(731,3,4); x2 <- rf(731,3,4

我需要使用R进行异常检测,但我认为我的代码非常长。我需要得到“查找异常”和“总异常”。有人能用apply family简化吗?。这是密码

#Library
library(AnomalyDetection)
# Data Preparation
set.seed(1)
datex <- seq(as.Date("2017/01/01"), as.Date("2019/01/01"), by = "day")
x1 <- rf(731,3,4); x2 <- rf(731,3,4); x3 <- rf(731,3,4)
data.train <- data.frame(datex,x1,x2,x3,x4,x5)
# Find Anomaly x1
find.anomaly.x1 <- AnomalyDetectionTs(data.train[,c(1,2)],
                                      max_anoms = 0.3,
                                      direction = "both",
                                      alpha = 0.05,
                                      plot = F); find.anomaly.x1$anoms
# Find Anomaly x2
find.anomaly.x2 <- AnomalyDetectionTs(data.train[,c(1,3)],
                                      max_anoms = 0.3,
                                      direction = "both",
                                      alpha = 0.05,
                                      plot = F);find.anomaly.x2$anoms
# Find Anomaly x3
find.anomaly.x3 <- AnomalyDetectionTs(data.train[,c(1,4)],
                                      max_anoms = 0.3,
                                      direction = "both",
                                      alpha = 0.05,
                                      plot = F); find.anomaly.x3$anoms
# List Find Anomaly
find.anomaly

## Total Anomaly
# Total Anomaly x1
total.anomaly.x1 <- dim(find.anomaly.x1$anoms)[1]; total.anomaly.x1
# Total Anomaly x2
total.anomaly.x2 <- dim(find.anomaly.x2$anoms)[1]; total.anomaly.x2
# Total Anomaly x3
total.anomaly.x3 <- dim(find.anomaly.x3$anoms)[1]; total.anomaly.x3
# Total Anomaly
var.anom <- c("x1","x2","x3")
tot.anom.x <- c(total.anomaly.x1,total.anomaly.x2,total.anomaly.x3)
total.anomaly <- data.frame(var.anom,tot.anom.x)
total.anomaly
#库
库(异常检测)
#数据准备
种子(1)

datex带有purrr包的解决方案:

library(purrr)

anomaly <- function(data, col) {
  x <- AnomalyDetectionTs(data[,c(1, col)],
                     max_anoms = 0.3,
                     direction = "both",
                     alpha = 0.05,
                     plot = F)
  x$anoms
}

find.anomaly <- map(2:4, ~ anomaly(data.train, col = .))
total.anomaly <- map(find.anomaly, ~ dim(.)[1])
库(purrr)

异常带有purrr包的解决方案:

library(purrr)

anomaly <- function(data, col) {
  x <- AnomalyDetectionTs(data[,c(1, col)],
                     max_anoms = 0.3,
                     direction = "both",
                     alpha = 0.05,
                     plot = F)
  x$anoms
}

find.anomaly <- map(2:4, ~ anomaly(data.train, col = .))
total.anomaly <- map(find.anomaly, ~ dim(.)[1])
库(purrr)

你好,很酷。对于“查找异常”,它是有效的,但对于“总体异常”,它不是我想要的。我需要一个数据帧,先生。我能有其他的解决办法吗?非常感谢你。。很好的工作,但是我可以从数据列(x1,x2,x3)名称中获得“总异常”(x1,x2,x3)的名称吗。谢谢你好,塞伯达尔加诺。。你做了一个惊人的解决方案。非常感谢你Hello sebdalgarno。。我对你的技巧有一个问题,我的“查找异常”中的一个表是空的,所以“总异常”中的数据不显示结果,并给出类似这样的错误“绑定行中的错误(x,.id):参数1是一个列表,必须包含原子向量”。请帮忙,谢谢谢洛,很酷。对于“查找异常”,它是有效的,但对于“总体异常”,它不是我想要的。我需要一个数据帧,先生。我能有其他的解决办法吗?非常感谢你。。很好的工作,但是我可以从数据列(x1,x2,x3)名称中获得“总异常”(x1,x2,x3)的名称吗。谢谢你好,塞伯达尔加诺。。你做了一个惊人的解决方案。非常感谢你Hello sebdalgarno。。我对你的技巧有一个问题,我的“查找异常”中的一个表是空的,所以“总异常”中的数据不显示结果,并给出类似这样的错误“绑定行中的错误(x,.id):参数1是一个列表,必须包含原子向量”。请帮忙,谢谢
find.anomaly <- map(2:6, ~ anomaly(data.train, col = .)) %>% setNames(names(data.train)[2:6])  
total.anomaly <- map_df(find.anomaly, ~ dim(.)[1])