it's documented as "unexpected"

?diag
Note

Using diag(x) can have unexpected effects if x is a vector that could be of
length one. Use diag(x, nrow = length(x)) for consistent behaviour.


And the result follows from this part,

    else if (length(x) == 1L && nargs() == 1L) {
        n <- as.integer(x)
        x <- 1
    }


baptiste

2009/9/4 Markku Karhunen <markku.karhunen@helsinki.fi>

> Hi,
>
> Does anybody know, what is going on here?
>
>  diag(sqrt(1))
>>
>     [,1]
> [1,]    1
>
>> diag(sqrt(0.3333))
>>
> <0 x 0 matrix>
>
>> sqrt(1)
>>
> [1] 1
>
>> sqrt(0.3333)
>>
> [1] 0.5773214
>
> BR, Markku Karhunen
> researcher
> University of Helsinki
>
> ______________________________________________
> R-help@r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide
> http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
>



-- 
_____________________________

Baptiste Auguié

School of Physics
University of Exeter
Stocker Road,
Exeter, Devon,
EX4 4QL, UK

http://newton.ex.ac.uk/research/emag
______________________________

	[[alternative HTML version deleted]]


