застрял на l oop с переменной глубиной - PullRequest
0 голосов
/ 29 апреля 2020

У меня есть фрейм данных с именем df2, который имеет 1501 точку данных

 Depth <- seq(0, 1500, by = 1)
 Temp <- rev(seq(1, 10, by = 0.006))

 D0 <- 0 
 Dend <- 1000
 r <- 2 

 days <- 100 


 D <- rep(NA, days+1)
 D <- D0
 Temp <- T0

 for (time in seq_len(steps)){  
  if (tail(D,1) >= Dend)  break
   D[time + 1] <- r + D[time] 
   Temp[time] <-  Temp[time]
   }

Я не могу связать Temp с D. Используя эту строку кода (Temp [время] <- Temp [время ]), Я получаю Temp каждые m за 1500. </p>

1 Ответ

1 голос
/ 29 апреля 2020

Один способ немного упростить вещи с помощью seq с использованием by= и length.out=.

Тогда мы можем использовать merge, чтобы объединить результаты обратно в df2. Это должен быть data.frame с именами для объединения, поэтому я изменил ваш cbind на data.frame.

Depth <- seq(0, 1500, by = 1)
Temp <- rev(seq(1, 10, by = 0.006))
df2 <- data.frame(Depth, Temp)
D0 <- 0
days <- 107
r <- 40

Result <- data.frame(Day = 0:days,
                     Depth =seq(from = D0, by= r ,length.out = days + 1))
Result <- merge(Result,df2,all.x=TRUE)
Result
#    Depth Day  Temp
#1       0   0 10.00
#2      40   1  9.76
#3      80   2  9.52
#4     120   3  9.28
#5     160   4  9.04
#...

Используя all.x=TRUE, мы получим NA, если в этой глубине нет значения в df2.

...