0

到目前为止,这是我的代码:基本上,我想要 x^2[0;10] & 6[11, infinity]

random <-  function(x){
   if (any(x <= 10 )) {
     return (x**2)}
   else if (any(x > 10 )){
     return(6) }
 }

不幸的是,当我尝试绘制或集成它时,R 仅使用函数的第一部分。

谢谢你的帮助!

4

1 回答 1

0

您的错误是因为使用了“任何”功能。只要 x 中的单个值小于 10,any(x <= 10) 将始终为真,例如,对于 [1, 2, 10, 15, 30],它将为真。因此,此函数永远不会到达第二个 if 语句。

你真正想做的是映射这个函数。首先,删除函数中的“任何”调用。然后将您的函数(此处标记为“随机”)传递给映射函数。map 函数是一个动态函数,它接受一个函数和一个对象列表(在本例中为数字)作为其参数。然后映射将该函数应用于所述列表的每个元素。

例如

用 x**2 映射 [1, 2, 3, 4] 返回 [1, 4, 9, 16]。映射 [1, 5, 15, 20] 与随机返回 [1, 25, 6, 6]

R 中有几种不同的映射函数,因此请在此处选择最适合您的映射函数。有些甚至包括 if 语句,可以节省您的时间。

于 2018-06-29T22:08:12.080 回答