我有一套简单的步骤来重新格式化一些数据。这些步骤起作用(找出差异,然后隔离那些高于或低于一个标准偏差的那些)。
x <- x[!is.na(x)]
x.d <- diff(x)
x.d <- x.d[!is.na(x.d)]
x.d <- ifelse(abs(x.d) > sd(x.d,na.rm = TRUE),x.d, 0)
我有很多系列,所以想把这些行放到一个函数中,并用lapply调用。例如
data.prep <- function(x) {
<The lines above>
return(x.d) }
我附加数据并创建了一个包含系列名称的列表 - 在这种情况下为“world”并称为函数
mydatalist <- as.list("world")
mydatalist.d <- lapply(mydatalist, FUN = data.prep)
我得到了
Error in abs(x.d) : non-numeric argument to mathematical function
3. ifelse(abs(x.d) > sd(x.d, na.rm = TRUE), x.d, 0) at FdataPrep.R#5
2. FUN(X[[i]], ...)
1. lapply(mydatalist, FUN = data.prep)
这是我想要获得的链接。 Input data versus wanted output 左边的图是原始数据,右边的图是我想要的输出。
有人可以帮助了解我哪里出错吗?
谢谢,
约翰