r - 将变量递增 N 次并将答案存储在矩阵中

标签 r increment

我有一个简单的公式,其中包括两个变量:方位角和波束宽度。方位角表示天线的方向/方位,由 0 度到 360 度之间的整数值给出。波束宽度代表天线的水平宽度,类似于一 block 苹果派的水平宽度。

cellPoints <- (Azimuth - (Beamwidth/2))%%360 

如果我的方位角/方位角为 120 度,波束宽度为 60 度,则意味着我的边缘位于 120-(60/2) 和 120+(60/2)。由于我的最左角度是 90 度,我希望从 90 度增加波束宽度/6,直到达到 150 度。

我想将结果存储在矩阵中。对于一次性计算来说,这很容易实现,但我的方位角和波束宽度具有许多不同的值。应该使用 for 循环还是使用 apply 系列之一来完成此操作?

我的数据框如下所示:

我的表格如下所示:

Cell Name   Azimuth Beamwidth                 cellPoints
ABCDU09A3     120      65       87.5 98.33 109.16 119.99 130.82 141.65 152.48
ABCDU09B3     240      65   
ABCDU09C3      0       65

最佳答案

你想要这样的序列吗?

edges = seq(Azimuth - Beamwidth/2, Azimuth + Beamwidth/2, Beamwidth/6)%%360

结果

Azimuth = 120
Beamwidth = 60

> edges
[1]  90 100 110 120 130 140 150

如果您有多个方位角值和相应的波束宽度,则执行以下操作:

Azimuth = c(120,300,40)
Beamwidth = c(60,30,6)

df = data.frame(Azimuth, Beamwidth)

points = apply(df,1, function(x) seq(x[1]-x[2]/2,x[1]+x[2]/2,x[2]/6) %% 360)

>points
     [,1] [,2] [,3]
[1,]   90  285   37
[2,]  100  290   38
[3,]  110  295   39
[4,]  120  300   40
[5,]  130  305   41
[6,]  140  310   42
[7,]  150  315   43

编辑

使用你的数据框,你应该这样做:

cellNames = c("ABCDU09A3","ABCDU09B3","ABCDU09C3")
Azimuth = c(120,240,0)
Beamwidth = c(65,65,65)

df = data.frame(cellNames,Azimuth, Beamwidth)

points = apply(df[,2:3],1, function(x) seq(x[1]-x[2]/2,x[1]+x[2]/2,x[2]/6) %% 360)

df = cbind(df,t(points))

结果:

  cellNames Azimuth Beamwidth     1         2        3   4         5         6     7
1 ABCDU09A3     120        65  87.5  98.33333 109.1667 120 130.83333 141.66667 152.5
2 ABCDU09B3     240        65 207.5 218.33333 229.1667 240 250.83333 261.66667 272.5
3 ABCDU09C3       0        65 327.5 338.33333 349.1667   0  10.83333  21.66667  32.5

如您所见,function(x)在 apply 函数中将取为 x参数数据框的每一行df但只有第 2 列和第 3 列(方位角和带宽)。

apply 函数的结果存储在列中,以便将其绑定(bind)到 df您需要按行获得结果,因此使用 t(points) 转置它.

关于r - 将变量递增 N 次并将答案存储在矩阵中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40181522/

相关文章:

r - Windows 脚本宿主失败

c++ - 如何增加 LARGE_INTEGER

c - putchar() 和 recur() 相关问题

c# - 带 float 的无限循环

java - 如何在循环内增加数组的大小

r - 为什么 `sample0` 里面是 `sample` 而不是 `cv.glm` ?

javascript - 使用回调选项选择新页面后,R DT 数据表不保留行索引/计数器列

r - 如何在 R 中的数据框中重新编码数据

r - 百分比标签到 100% 堆栈图尝试 "mutate"但不起作用

svn - 一个 SVN 存储库中的不同修订增量