strrev =
function(x)
paste(substring(x,nchar(x):1,nchar(x):1), collapse = "")
VS
strrev <- function(x)
{paste(substring(x,nchar(x):1,nchar(x):1), collapse = "")
}
为什么两种方式都有效?定义函数时,花括号不是强制性的吗? 我是R的新手,所以请放轻松我:(
答案 0 :(得分:1)
就R
而言,功能完全相同。
strrev = function(x)
paste(substring(x,nchar(x):1,nchar(x):1), collapse = "")
strrev(1)
# [1] "1"
strrev <- function(x) {
paste(substring(x,nchar(x):1,nchar(x):1), collapse = "")
}
strrev(1)
# [1] "1"
默认情况下,function
将读取第一行(或大括号中的任何内容)并返回最后一行。
例如,在这种情况下,如果我们添加一个没有花括号的行,只有第一行传递给函数,第二行只是执行:
strrev = function(x)
paste(substring(x,nchar(x):1,nchar(x):1), collapse = "")
print("do something else")
# [1] "do something else"
strrev(1)
# [1] "1"
我们可以用大括号
隔离所有这些strrev <- function(x) {
paste(substring(x,nchar(x):1,nchar(x):1), collapse = "")
print("do something else")
}
strrev(1)
#[1] "do something else"
但是,尽管第一行(paste(...)
)在函数内执行,但只返回最后一行(print(...)
)。要实际执行这两项操作,您可以在函数中使用return()
。请注意,执行退出return
处的函数。在此示例中,不执行最后一个print()
。
strrev <- function(x) {
y <- paste(substring(x,nchar(x):1,nchar(x):1), collapse = "")
print("do something else")
return(y)
print("execution already exit!")
}
strrev(1)
#[1] "do something else"
#[1] "1"
作为“良好做法”建议,最新格式始终是最佳格式(即您知道执行的内容和返回的内容)。