如何在R中重现以下涉及for循环的matlab代码?

时间:2019-05-01 18:09:50

标签: r matlab for-loop plot

我想在R中使用for循环绘制图形。我尝试使用matlab,它可以正常工作。

我已经在matlab中尝试了以下代码:

#matlab code
d=0:400;
for h=1:10:50
w=1./(1+(d.^2/h^2));
plot(d,w);
hold on
end
xlabel('Distance(km)')
ylabel('Weight')

我在R中尝试了以下代码,但似乎不起作用

#R code
h <- c(1,20,50,100,200,400)
d <- seq(40, 420, by=20)
for (i in 1:d) {
  w <- 1/(1+(i^2/h^2))
  lines(d,w)
    }

如何使用for循环在R中复制上述matlab代码?

1 个答案:

答案 0 :(得分:0)

以下是使用Tidyverse软件包的一种可能性:

library(tidyverse)

df <- 
  tibble(
    d = rep(0:400, 5),
    h = rep(c(1, 11, 21, 31, 41), each = 401)
  ) %>% 
  mutate(w = 1 / (1 + (d ^ 2 / h ^ 2)))

df %>% 
  mutate(h = factor(h)) %>% 
  ggplot(aes(x = d, y = w, color = h)) +
  geom_line() + 
  labs(
    x = "Distance (km)",
    y = "Weight"
  ) +
  theme(legend.position = "bottom")

enter image description here