r-我怎么能得到一系列的数字作为我的答案,*而不仅仅是最后一个数字



这是我的代码,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"

最新更新