我正在使用val client = OkHttpClient()
val requestBody = FormEncodingBuilder()
.add("grant_type", "authorization_code")
.add("client_id", "")
.add("client_secret", "")
.add("redirect_uri", "")
.add("code", "yourweb server id)
.build()
val request = Request.Builder()
.url("https://www.googleapis.com/oauth2/v4/token")
.post(requestBody)
.build()
client.newCall(request).enqueue(object : Callback {
override fun onFailure(request: Request, e: IOException) {
}
@Throws(IOException::class)
override fun onResponse(response: Response) {
try {
val jsonObject = JSONObject(response.body().string())
mTokenExpired = SystemClock.elapsedRealtime() + jsonObject.optLong("expires_in") * 1000
accessTokenObservable.postValue(Resource.success("",jsonObject.optString("access_token")))
} catch (e: JSONException) {
e.printStackTrace()
}
}
})
来获取观察值的总和,紧接其前的两个值。但是,目前,结果显示在每三个一组的顶部/最早的行中,但我希望它显示在最后/最新的行中。
这是示例代码:
zoo::rollsum()
如您所见,我正在使用library(zoo)
library(data.table)
random_dt <- data.table(group = LETTERS, total = sample(1:10, 26, replace = T))
random_dt <- random_dt[, .(group, total,
rolling_total = as.numeric(rollsum(total, 3, align = "right")))]
,这正是我所理解的。当我使用align = "right"
或align = "left"
时,没有任何变化。
我还会收到一条警告,可能与之有关:
警告信息: 在as.data.table.list(jval)中: 项目3的尺寸为24,但最大尺寸为26(已回收,剩余2件)
我理解这个信息-通过这样做,前两个观察值没有足够的先前观察值来产生三个的滚动总和。理想情况下,这些值将保留为NA或其他值。但是,这个问题可能是导致价值上升的原因吗?对我来说,align = "center"
列中的最后两个值是基于什么并不明显。
答案 0 :(得分:1)
问题是na.pad
默认为FALSE
,并且未指定fill
参数。因此,它将在一开始就丢弃NA
,这会导致长度不平衡。将其更改为na.pad = TRUE
并且应该可以使用
random_dt[, .(group, total, rolling_total = as.numeric(rollsum(total, 3,
align = "right", na.pad = TRUE)))]
此外,OP还提到了na.pad
的过时警告,因此fill = NA
会更合适