提取每两个连续元素之间的差异 [英] Extract difference between every 2 consecutive elements

查看:12
本文介绍了提取每两个连续元素之间的差异的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个数值列表,我需要计算一个新的列表,该列表将由原始列表中每两个连续元素的差值组成。 我有这个代码:

wss <- (nrow(dat)-1)*sum(apply(dat,2,var))
  for (i in 2:15) wss[i] <- sum(kmeans(dat,
                                       centers=i)$withinss)
  plot(1:15, wss, type="b", xlab="Number of Clusters",
       ylab="Within groups sum of squares")

  # choose optimal k where sos derivative is large for the first time
diff <- lapply(wss, diff)

所以我的原始列表是wss

> dput(wss)
c(4155212952468.46, 4021505707879.36, 4017356406677.14, 4015231535838.63, 
4013350949497.91, 17067610483.738, 17023281391.9182, 4013258218594.64, 
14454798910.9291, 16989216167.6064, 14860266330.575, 14480295584.8302, 
14506662229.3596, 14289181733.1553, 14283121461.9347)
在结果列表中,我预计第一个元素将是 4155212952468.46-4021505707879.36 第二个元素是 4021505707879.36-4017356406677.14 以此类推 感谢任何帮助

推荐答案

您只需使用

diff(wss)

,它返回差异的向量。

来说明你做错了什么。LApply应该在列表上使用,并为列表中的每个元素计算一个函数。这在这里不适用,因为:i)您没有列表,ii)您需要两个连续元素之间的差异,并且在您使用的方法中,即使它是一个列表,您也只向函数diff提供了一个

这篇关于提取每两个连续元素之间的差异的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆