【发布时间】:2015-05-05 18:22:18
【问题描述】:
我有这个向量:
a = c(6722, 487, 5919, 179, 7305, 336, 10015, 615, 8651, 253, 679, 75, 8652, 118, 11436, 229)
我需要创建一个新向量,其值对的比率如下:
ratio = c(a[2]/a[1], a[4]/a[3], a[6]/a[5]... etc)
所以输出应该是这样的:
ratio num[1:8] 0.0724 0.03024 0.04599 etc (edited)
我尝试了以下代码:
ratio = c()
for (i in length(a)){
ratio[i] = a[2*i]/a[2*i-1]
}
得到了这个:
Error in a[0+2i] : invalid subscript type 'complex'
在我发现 R 认为我的意思是 i = sqrt(-1) 之后,我尝试了这个:
ratio = c()
for (i in length(a)){
ratio[i] = a[i+i]/a[i+i-1]
}
生产的:
> ratio
[1] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
然后我尝试使用 lapply:
lapply(a, function(x)
a[x+i]/a[x+i-1])
这给了我一个 16 元素的列表,里面全是 NA。
有人知道怎么做吗?
【问题讨论】:
-
a[2i]/a[2i-1]- 你需要乘以2*i,而不是2i -
您的示例输出错误。
a[2]/a[1]不是 7.25 -
@Frank - 是的,感谢您的提醒。复制百分比而不是比率。刚刚修好了。