[R] fill 0-row data.frame with 1 line of NAs
Peter Ehlers
ehlers at ucalgary.ca
Tue Jul 10 19:59:40 CEST 2012
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.
>>>
>>
>
>
More information about the R-help
mailing list