Como reduzir o número de linhas em R
Ao transformar o roteiro em R, nem todos os elementos são necessários. Na verdade, o Retorna()
declaração é opcional, porque, por padrão, R sempre retornará o valor da última linha de código no corpo da função.Retornar valores por defeito
Suponha que você esqueceu de adicionar retorno (resultado) no addPercent () função. O que aconteceria então? Você pode descobrir se você excluir a última linha do addPercent () função, salvar o arquivo, e fonte novamente para carregá-lo no espaço de trabalho.
Qualquer alteração feita para uma função terá efeito somente depois que você enviar o código adaptado para o console. Isto efetivamente substituir o objeto de função velho por um novo.
Se você tentar addPercent (new.numbers) novamente, você vê. . . nada. Aparentemente, a função não fazer mais nada - mas isso é uma ilusão, como você pode ver com o seguinte código:
> Print (addPercent (new.numbers)) [1] "82,2%" "2,5%" "162%" "40%"
Neste caso, a última linha da função devolve o valor de resultado invisível, é por isso que você vê-lo apenas se você pedir especificamente para imprimi-lo. O valor é devolvido de forma invisível devido à atribuição na última linha. Porque este não é realmente prático, você pode soltar a atribuição na última linha e altere o código de função para o seguinte:
addPercent lt; - função (x) {por cento lt; - round (x * 100, dígitos = 1) colar (por cento, "%", Set = "")}
Esta função funciona novamente como antes. Pode parecer Retorna() é totalmente inútil, mas você realmente precisa dele se você quiser sair da função antes do final do código no corpo. Por exemplo, você pode adicionar uma linha para o addPercent função que verifica se x é numérico, e se não, os retornos NULO, como isso:
addPercent lt; - (! is.numeric (x)) função (x) {if retorno (NULL) por cento lt; - round (x * 100, dígitos = 1) colar (por cento, "%", Set = "")}
Quebrar as paredes
As chaves, {}, formar a parede proverbial em torno da função, mas em alguns casos, você pode deixá-los bem. Suponha que você queira calcular as probabilidades de uma proporção. As chances de algo acontecer é não mais do que a chance que acontece dividida pela chance de que isso não aconteça. Assim, para calcular as probabilidades, você pode escrever uma função como esta:
> odds lt; - função (x) x / (1-x)
Mesmo sem as chaves ou Retorna() declaração, isso funciona perfeitamente bem, como você pode ver no exemplo a seguir:
> probabilidades (0,8) [1] 4
Se uma função consiste em apenas uma linha de código, você pode simplesmente adicionar essa linha após a lista de argumentos sem ser contida em chaves. R verá o código após a lista de argumentos como o corpo da função.
Você poderia fazer o mesmo com o addPercent () função aninhando tudo assim:
> addPercent lt; - função (x) colar (round (x * 100, dígitos = 1), "%", Set = "")
Isso é um plano astuto para dar a próxima pessoa a ler esse código uma grande dor de cabeça. É um pouco menos de um plano astuto se que a próxima pessoa é você, porém, e as possibilidades são, ele será.
Economizando espaço em um corpo da função é muito menos importante do que manter o código legível, porque economiza espaço ganha nada. Construções como o probabilidade função são úteis apenas em casos muito específicos.