Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
警告消息将值重新指定给R中的积分?_R - Fatal编程技术网

警告消息将值重新指定给R中的积分?

警告消息将值重新指定给R中的积分?,r,R,我对R很陌生,但我只是想对向量Y中的元素做一个简单的条件重新赋值。然而,当重新赋值处理积分时,我不断收到警告消息。以下是完整的代码: > 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] <

我对R很陌生,但我只是想对向量Y中的元素做一个简单的条件重新赋值。然而,当重新赋值处理积分时,我不断收到警告消息。以下是完整的代码:

> 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)
+   }
+ }
此外,我有点好奇为什么输出也会被每个元素分成两个数字。通常我习惯于这样的矢量输出:

 [1]  2  4  6  8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38
[20] 40
因此,任何关于我做错了什么的澄清都是非常感谢的。

以下结果:

integrate(function(t) sqrt(t), lower = 0, upper = k)
这是一份清单

在插入到
Y
向量之前,需要使用
[[1]]
获取每个列表项的第一个元素:

Y <- c()
#for (k in 1:20) { # This loop is unnecessary
#     Y[k] <- k    # as it will be overwritten
#}                 # with cos(3 * k) subsequently
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)[[1]]
     }
}
Y以下结果:

integrate(function(t) sqrt(t), lower = 0, upper = k)
这是一份清单

在插入到
Y
向量之前,需要使用
[[1]]
获取每个列表项的第一个元素:

Y <- c()
#for (k in 1:20) { # This loop is unnecessary
#     Y[k] <- k    # as it will be overwritten
#}                 # with cos(3 * k) subsequently
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)[[1]]
     }
}

Y让我告诉你如何缩短代码:

Y <- numeric(20)
Y[1:12] <- cos(3 * (1:12))
Y[13:20] <- sapply(13:20, function (u) integrate(sqrt, lower = 0, upper = u)$value )

Y让我告诉你如何缩短代码:

Y <- numeric(20)
Y[1:12] <- cos(3 * (1:12))
Y[13:20] <- sapply(13:20, function (u) integrate(sqrt, lower = 0, upper = u)$value )

Y放大@李哲源ZheyuanLi的评论:看看integrate(function(t)sqrt(t),lower=0,upper=k)的输出,它不仅仅是一个数字。啊,这很有道理,我想这只是我不理解integrate的输出的一个例子@李哲源ZheyuanLi的评论:看看integrate(function(t)sqrt(t),lower=0,upper=k)的输出,它不仅仅是一个数字。啊,这很有道理,我想这只是我不理解integrate的输出。啊,这非常有用,谢谢!我知道一定有更简单的方法来创建初始Y向量,而不使用for循环。我很好奇sapply做了什么?
Lappy
sapply
只是他们第一个论点中的项目循环。啊,这非常有用,谢谢!我知道一定有更简单的方法来创建初始Y向量,而不使用for循环。我很好奇sapply做了什么?
lapply
sapply
只是在它们的第一个参数中对项目进行循环。再次证明可以用任何语言编写Fortran代码。再次证明可以用任何语言编写Fortran代码。