R 循环并使用向量值执行操作
我有这个向量:R 循环并使用向量值执行操作,r,loops,for-loop,R,Loops,For Loop,我有这个向量: 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) 因此,输出应如下所示: r
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(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列表
有人知道怎么做吗?这里的
循环不需要,请尝试(不确定是否需要*100L
,因为您的描述与所需的输出不匹配)
a[2i]/a[2i-1]
-您需要将其乘以2*i
,而不是2i
您的示例输出是错误的<代码>a[2]/a[1]
不是7。25@Frank-是的,谢谢你的提醒。复制了百分比而不是比率。刚刚修好了,就这样!谢谢你,大卫。如果您有时间/意愿,您介意解释一下这个解决方案是如何工作的吗?非常感谢!这是一个简单的循环机制,内置于R中。如果一个较长的向量被一个较短的向量子集(例如,cbind
ed为较短的向量),则较短的向量被循环,因此您将得到FALSE、TRUE、FALSE、TRUE
等,直到它达到较长向量的大小。