我不太了解function()中的可选参数return_sum = TRUE及其在这种情况下的作用。
如果有人可以解释在哪种情况下return_sum == TRUE,那将是很好的。
linkedin <- c(16, 9, 13, 5, 2, 17, 14)
facebook <- c(17, 7, 5, 16, 8, 13, 14)
interpret <- function(num_views) {
if (num_views > 15) {
print("You're popular!")
return(num_views)
} else {
print("Try to be more visible!")
return(0)
}
}
interpret_all <- function(views, return_sum=TRUE) {
count <- 0
for (v in views) {count<-count+interpret(v)
}
if (return_sum==TRUE) {return(count)
} else {NULL
}
}
interpret_all(linkedin)
interpret_all(facebook)
答案 0 :(得分:0)
return_sum
是函数interpret_all
的参数,该函数的默认值为TRUE
,因此,如果您不向其传递任何值,它将被视为TRUE
。如果您注释掉print
语句,则很容易看出区别
interpret <- function(num_views) {
if (num_views > 15) {
#print("You're popular!")
return(num_views)
} else {
#print("Try to be more visible!")
return(0)
}
}
interpret_all <- function(views, return_sum=TRUE) {
count <- 0
for (v in views) count<- count + interpret(v)
if (return_sum) return(count) else NULL
}
现在,检查差异
interpret_all(linkedin)
#[1] 33
interpret_all(linkedin, FALSE)
#NULL
interpret_all(linkedin, TRUE)
#[1] 33
根据您当前的逻辑,只需增加一点,您就可以通过最小化代码行将功能简化为一个功能
interpret_all <- function(views, return_sum=TRUE) {
if (return_sum) return(sum(views[views > 15])) else NULL
}
这仍然会得到相同的结果
interpret_all(linkedin, TRUE)
#[1] 33
interpret_all(linkedin, FALSE)
#NULL