我有这个载体:
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个元素的列表,其中包含了NAs。
有谁知道怎么做?
答案 0 :(得分:7)
此处不需要for
循环,只需尝试(不确定最后是否需要* 100L
,因为您的描述与所需的输出不匹配)
a[c(FALSE, TRUE)]/ a[c(TRUE, FALSE)] * 100L
## [1] 7.244868 3.024159 4.599589 6.140789 2.924517 11.045655 1.363847 2.002448