我對R非常陌生,但我只是想對向量Y中的元素做一個簡單的條件重新分配。但是,當重新分配處理積分時,我總是收到警告消息。下面是完整的代碼:警告消息將值重新分配給R中的積分?
> rm(list=ls())
> Y <- c()
> for (k in 1:20) {
+ Y[k] <- k
+ }
> for (k in 1:20) {
+ if (Y[k] < 12) {
+ Y[k] <- cos(3 * k)
+ } else {
+ Y[k] <- integrate(function(t) sqrt(t), lower = 0, upper = k)
+ }
+ }
一個警告消息:
Warning messages:
1: In Y[k] <- integrate(function(t) sqrt(t), lower = 0, upper = k) :
數量的項目替換的是不是更換長度的倍數
並且返回的Y: [ 1]] [1] -0.9899925
[[2]]
[1] 0.9601703
[[3]]
[1] -0.9111303
[[4]]
[1] 0.843854
[[5]]
[1] -0.7596879
[[6]]
[1] 0.6603167
[[7]]
[1] -0.5477293
[[8]]
[1] 0.424179
[[9]]
[1] -0.2921388
[[10]]
[1] 0.1542514
[[11]]
[1] -0.01327675
[[12]]
[1] 27.71282
[[13]]
[1] 31.24811
[[14]]
[1] 34.92214
[[15]]
[1] 38.72984
[[16]]
[1] 42.66667
[[17]]
[1] 46.72854
[[18]]
[1] 50.91169
[[19]]
[1] 55.21273
[[20]]
[1] 59.62849
Additi最後,我對爲什麼輸出每個元素的兩個數字都被分解了一點感到好奇。通常我已經習慣了矢量輸出看起來像這樣:
[1] 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38
[20] 40
因此,任何澄清我做錯了什麼是高度讚賞。
放大@李哲源ZheyuanLi的評論:看看'integration(function(t)sqrt(t),lower = 0,upper = k)的輸出'這不僅僅是一個數字。 – G5W
啊,這很有道理,我想這僅僅是一個我不理解集成輸出的例子。 –