【发布时间】:2014-12-03 00:33:16
【问题描述】:
我有一个向量 d,我从 d 创建新向量,这样新向量包含 d 的每个第 m 个元素:
v<-d[seq(1,length(d),m)]
下一步我要计算总和
s<-sum(abs(v[1:(length(v)-1)]-v[2:length(v)]))
如果我用很少的 m 值来做这将没有问题。但是,如果我的 m 值超过 50 个,则逐个执行此操作将不是理想的方式。我想概括创建与 m 的不同值相对应的 v 的方式。以下是我想出的代码:
d1<-rnorm(20)
m<-seq(1,10,1)
v<-matrix(rep(0,length(d1)*lenght(m)),nrow=length(m))
for (i in 1:length(m)){v[i,]<-d1[seq(1,length(d1),m[i])]}
但是当我运行代码时,出现以下错误:
Error in v[i, ] <- d1[seq(1, length(d1), m[i])] :
number of items to replace is not a multiple of replacement length
所以我尝试了另一种方法:
v<-rep(0,length(d1))
for (i in 1:length(m)){v<-d1[seq(1,length(d1),m[i])]}
但是这段代码只给了我在 m=m[length(m)] 处的 v 值,而不是所有与 m[1] 到 m[length(m)] 对应的向量 v。任何人都可以建议我解决这个问题的功能/方法吗?
在此先感谢
【问题讨论】:
-
如果您发布输入数据和所需输出数据的(小而简化的!)示例,将会有所帮助。
标签: r