A menos que a linha:
> diff <- abs(y1 - y2)
produza pontos com valores negativos, a abordagem deve dar a área equivalente entre a "parte de cima" da y2 e a "parte de baixo" de y1.
Em outras palavras, a área definida pelos dois trechos das suas funções y1 e y2 não pode ter "cruzamentos", e se houver precisa ver o que ele significa no domínio do problema alvo do seu estudo.
Outro ponto importante é ao impor um vetor x com valores espaçados duma unidade, há uma implícita imposição do "tamanho" da área que será calculada.
Aliás, já q se tem os dados no vetor diff, a área seria:
½∙(diff[1] +2∙sum(diff[2:99]+diff[100]), uma vez que o espaço entre pontos é a unidade.
com as unidades da abscissa multiplicada pela da ordenada.
HTH
--
Cesar Rabak