[R] Erase content of dataframe in a single stroke

peter dalgaard pd@|gd @end|ng |rom gm@||@com
Thu Sep 27 14:04:02 CEST 2018


Variations on the same theme:

> testdf<-data.frame(A=c(1,2),B=c(2,3),C=c(3,4))
> testdf[0,]
[1] A B C
<0 rows> (or 0-length row.names)
> testdf[FALSE,]
[1] A B C
<0 rows> (or 0-length row.names)
> testdf[integer(0),]
[1] A B C
<0 rows> (or 0-length row.names)
> testdf[NULL,]
[1] A B C
<0 rows> (or 0-length row.names)

-pd

> On 27 Sep 2018, at 10:32 , PIKAL Petr <petr.pikal using precheza.cz> wrote:
> 
> Hm
> 
> I would use
> 
>> testdf<-data.frame(A=c(1,2),B=c(2,3),C=c(3,4))
>> str(testdf)
> 'data.frame':   2 obs. of  3 variables:
> $ A: num  1 2
> $ B: num  2 3
> $ C: num  3 4
>> testdf<-testdf[-(1:nrow(testdf)),]
>> str(testdf)
> 'data.frame':   0 obs. of  3 variables:
> $ A: num
> $ B: num
> $ C: num
> 
> Cheers
> Petr
> 
>> -----Original Message-----
>> From: R-help <r-help-bounces using r-project.org> On Behalf Of Jim Lemon
>> Sent: Thursday, September 27, 2018 10:12 AM
>> To: Luigi Marongiu <marongiu.luigi using gmail.com>; r-help mailing list <r-help using r-
>> project.org>
>> Subject: Re: [R] Erase content of dataframe in a single stroke
>> 
>> Ah, yes, try 'as.data.frame" on it.
>> 
>> Jim
>> 
>> On Thu, Sep 27, 2018 at 6:00 PM Luigi Marongiu <marongiu.luigi using gmail.com>
>> wrote:
>>> 
>>> Thank you Jim,
>>> this requires the definition of an ad hoc function; strange that R
>>> does not have a function for this purpose...
>>> Anyway, it works but it changes the structure of the data. By
>>> redefining the dataframe as I did, I obtain:
>>> 
>>>> df
>>> [1] A B C
>>> <0 rows> (or 0-length row.names)
>>>> str(df)
>>> 'data.frame': 0 obs. of  3 variables:
>>> $ A: num
>>> $ B: num
>>> $ C: num
>>> 
>>> When applying your function, I get:
>>> 
>>>> df
>>> $A
>>> NULL
>>> 
>>> $B
>>> NULL
>>> 
>>> $C
>>> NULL
>>> 
>>>> str(df)
>>> List of 3
>>> $ A: NULL
>>> $ B: NULL
>>> $ C: NULL
>>> 
>>> The dataframe has become a list. Would that affect downstream
>> applications?
>>> 
>>> Thank you,
>>> Luigi
>>> On Thu, Sep 27, 2018 at 9:45 AM Jim Lemon <drjimlemon using gmail.com>
>> wrote:
>>>> 
>>>> Hi Luigi,
>>>> Maybe this:
>>>> 
>>>> testdf<-data.frame(A=1,B=2,C=3)
>>>>> testdf
>>>> A B C
>>>> 1 1 2 3
>>>> toNull<-function(x) return(NULL)
>>>> testdf<-sapply(testdf,toNull)
>>>> 
>>>> Jim
>>>> On Thu, Sep 27, 2018 at 5:29 PM Luigi Marongiu
>> <marongiu.luigi using gmail.com> wrote:
>>>>> 
>>>>> Dear all,
>>>>> I would like to erase the content of a dataframe -- but not the
>>>>> dataframe itself -- in a simple and fast way.
>>>>> At the moment I do that by re-defining the dataframe itself in this way:
>>>>> 
>>>>>> df <- data.frame(A = numeric(),
>>>>> +                   B = numeric(),
>>>>> +                   C = character())
>>>>>> # assign
>>>>>> A <- 5
>>>>>> B <- 0.6
>>>>>> C <- 103
>>>>>> # load
>>>>>> R <- cbind(A, B, C)
>>>>>> df <- rbind(df, R)
>>>>>> df
>>>>> A   B   C
>>>>> 1 5 0.6 103
>>>>>> # erase
>>>>>> df <- data.frame(A = numeric(),
>>>>> +                  B = numeric(),
>>>>> +                  C = character())
>>>>>> df
>>>>> [1] A B C
>>>>> <0 rows> (or 0-length row.names)
>>>>>> 
>>>>> 
>>>>> Is there a way to erase the content of the dataframe in a simplier
>>>>> (acting on all the dataframe at once instead of naming each column
>>>>> individually) and nicer (with a specific erasure command instead
>>>>> of re-defyining the object itself) way?
>>>>> 
>>>>> Thank you.
>>>>> --
>>>>> Best regards,
>>>>> Luigi
>>>>> 
>>>>> ______________________________________________
>>>>> R-help using r-project.org mailing list -- To UNSUBSCRIBE and more, see
>>>>> 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.
>>> 
>>> 
>>> 
>>> --
>>> Best regards,
>>> Luigi
>> 
>> ______________________________________________
>> R-help using r-project.org mailing list -- To UNSUBSCRIBE and more, see
>> 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.
> Osobní údaje: Informace o zpracování a ochraně osobních údajů obchodních partnerů PRECHEZA a.s. jsou zveřejněny na: https://www.precheza.cz/zasady-ochrany-osobnich-udaju/ | Information about processing and protection of business partner’s personal data are available on website: https://www.precheza.cz/en/personal-data-protection-principles/
> Důvěrnost: Tento e-mail a jakékoliv k němu připojené dokumenty jsou důvěrné a podléhají tomuto právně závaznému prohláąení o vyloučení odpovědnosti: https://www.precheza.cz/01-dovetek/ | This email and any documents attached to it may be confidential and are subject to the legally binding disclaimer: https://www.precheza.cz/en/01-disclaimer/
> 
> ______________________________________________
> R-help using r-project.org mailing list -- To UNSUBSCRIBE and more, see
> 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.

-- 
Peter Dalgaard, Professor,
Center for Statistics, Copenhagen Business School
Solbjerg Plads 3, 2000 Frederiksberg, Denmark
Phone: (+45)38153501
Office: A 4.23
Email: pd.mes using cbs.dk  Priv: PDalgd using gmail.com




More information about the R-help mailing list