我有这个函数来计算连续日期/时间的差异,以秒为单位。它工作正常,但我想了解为什么我需要第一行:
function changeDate(obj) {
if(obj.value == "TOD"){
today = new Date();
todayFormat = today.getDate() + "/" + (today.getMonth() + 1) + "/" + today.getFullYear().toString();
document.getElementById("fromdate").value = todayFormat;
document.getElementById("todate").value = todayFormat;
}
}
为什么它会以这种格式给我一个错误?:
padded.diff <- function(x) c(0L, diff(x))
df2=within(df, {
date <- strptime(Last.Modified.Date, format="%d.%m.%Y %H:%M:%S")
date.diff <- padded.diff(as.numeric(date))
})
错误如下:
df2=within(df, {
date <- strptime(Last.Modified.Date, format="%d.%m.%Y %H:%M:%S")
date.diff <- diff(as.numeric(date))
})
答案 0 :(得分:3)
如果您正在对d_i = x_i - x_(i-1)
- 长度输入向量进行差异n
,则结果将是长度为n-1
的向量;或者更一般地,diff(x, lag = k)
导致长度等于length(x)-k
的向量。你收到的错误信息,
替换元素1有25584行,需要25585
表示您尝试用25584个元素替换25585长度的向量。 padded.diff
只是添加一个整数值(0L
,这是非常传统的)来解释这种长度差异。您可以考虑padded.diff
的更一般版本,以防您需要lag > 1
:
pad.diff <- function(x, n = 1) c(rep(0L,n), diff(x, lag = n))
##
x <- (1:5)**2
##
R> diff(x)
#[1] 3 5 7 9
##
R> pad.diff(x)
#[1] 0 3 5 7 9
##
R> pad.diff(x, 2)
#[1] 0 0 8 12 16