这是我的代码,odtest(x(的答案只有"奇数";,我怎样才能得到一系列从5到25的数字作为答案?
在手动中,答案应该是"0";奇数";,6;奇数";,8………24,";奇数";
*函数,如果必须使用else。谢谢
x=5
odtest=function(x){
for(i in x:(x+20){
if(i%%2>0){i="odd"}
}
return(i)}
一个解决方案:
x=5
odtest <- function(y){
ifelse(y %% 2 > 0, "odd", y)
}
sapply(x:(x+20), odtest)
[1] "odd" "6" "odd" "8" "odd" "10" "odd" "12" "odd" "14" "odd" "16" "odd" "18" "odd" "20" "odd" "22" "odd" "24" "odd"
尝试的问题在于,for
循环会覆盖它评估的每个x值的答案,然后只返回最终答案。您需要返回一个向量或列表。如果你想对最终用户隐藏sapply
,你可以定义一个包装函数:
wrapperFunction <- function(x) {
sapply(x:(x+20), odtest)
}
用直接赋值替换奇数。
odtest=function(x){
x1 <- x:(x+20)
x1[x1 %% 2 > 0] <- 'odd'
x1
}
odtest(5)
# [1] "odd" "6" "odd" "8" "odd" "10" "odd" "12" "odd" "14" "odd" "16" "odd"
#[14] "18" "odd" "20" "odd" "22" "odd" "24" "odd"