fill 0-row data.frame with 1 line of NAs
On 2012-07-10 08:50, Brian Diggs wrote:
On 7/10/2012 7:53 AM, Peter Ehlers wrote:
On 2012-07-10 06:57, Rui Barradas wrote:
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)
Both this and Liviu's original solution destroy the
factor nature of 'Species' (which may not matter, of
course). How about
(.xb <- iris[ iris$Species=='zz', ])
.xb <- .xb[1, ] # this probably shouldn't work, but it does.
Using NA subscripting seems even better
Yes, you can subset with NA or any real number greater than 1. Peter Ehlers
empty <- function(x) {
if(NROW(x) == 0) {
x[NA,]
} else {
x
}
}
It even preserves the factor nature of things:
> empty(iris[iris$Specis=='zz',])
Sepal.Length Sepal.Width Petal.Length Petal.Width Species NA NA NA NA NA <NA>
> str(empty(iris[iris$Specis=='zz',]))
'data.frame': 1 obs. of 5 variables: $ Sepal.Length: num NA $ Sepal.Width : num NA $ Petal.Length: num NA $ Petal.Width : num NA $ Species : Factor w/ 3 levels "setosa","versicolor",..: NA
? Peter Ehlers
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
______________________________________________ R-help at 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.