到目前为止,这是我的代码: 基本上,我要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仅使用函数的第一部分。
感谢您的帮助!
答案 0 :(得分:0)
您的错误是因为使用了“ any”功能。只要x中的单个值小于十,any(x <= 10)将始终为true。对于[1、2、10、15、30]都是正确的。因此,此函数永远不会到达第二个if语句。
您实际要做的是映射此功能。首先,删除函数中的“ any”调用。然后将您的函数(此处标记为“随机”)传递给map函数。映射函数是一种动态函数,它接受一个函数和一个对象列表(在这种情况下为数字)作为其参数。然后,地图将功能应用于所述列表的每个元素。
例如
用[x ** 2]映射[1、2、3、4]会返回[1、4、9、16]。 用随机返回值[1,25,6,6]映射[1、5、15、20]
R中有几种不同的映射函数,因此请查看here以选择最适合您的映射函数。有些甚至包含if语句,可以节省您的时间。