[R] fill 0-row data.frame with 1 line of NAs

Rui Barradas ruipbarradas at sapo.pt
Tue Jul 10 15:57:37 CEST 2012


Hello,

If you write a function, it becomes less convoluted...


empty <- function(x){
	if(NROW(x) == 0){
		y <- rep(NA, NCOL(x))
		names(y) <- names(x)
		y
	}else x
}

(.xb <- iris[ iris$Species=='zz', ])
empty(.xb)


Hope this helps,

Rui Barradas

Em 10-07-2012 14:15, Liviu Andronic escreveu:
> Dear all
> Is there a simpler method to achieve the following: When I obtain an
> empty data.frame after subsetting, I need for it to contain one line
> of NAs. Here's a dummy example:
>> (.xb <- iris[ iris$Species=='zz', ])
> [1] Sepal.Length Sepal.Width  Petal.Length Petal.Width  Species
> <0 rows> (or 0-length row.names)
>> dim(.xb)
> [1] 0 5
>> (.xa <- data.frame(matrix(rep(NA, ncol(.xb)), 1)))
>    X1 X2 X3 X4 X5
> 1 NA NA NA NA NA
>> names(.xa) <- names(.xb)
>> (.xb <- .xa)
>    Sepal.Length Sepal.Width Petal.Length Petal.Width Species
> 1           NA          NA           NA          NA      NA
>
>
> The solution I came up with is way too convoluted. Anything simpler? Regards
> Liviu
>
>



More information about the R-help mailing list