Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

what is the "class" parameter in structure()?

Tags:

r

I am trying to use the structure() function to create a data frame in R. I saw something like this

structure(mydataframe, class="data.frame")

Where did class come from? I saw someone using it, but it is not listed in the R document.

Is this something programmers learned in another language and carries it over? And it works. I am very confused.

Edit: I realized dput(), is what actually created a data frame looking like this. I got it figured out, cheers!

like image 441
user1061210 Avatar asked Dec 29 '25 15:12

user1061210


1 Answers

You probably saw someone using dput. dput is used to post (usually short) data. But normally you would not create a data frame like that. You would normally create it with the data.frame function. See below

> example_df <- data.frame(x=rnorm(3),y=rnorm(3))
> example_df
           x          y
1  0.2411880  0.6660809
2 -0.5222567 -0.2512656
3  0.3824853 -1.8420050
> dput(example_df)
structure(list(x = c(0.241188014013708, -0.522256746461544, 0.382485333260912
), y = c(0.666080872170054, -0.251265630627216, -1.84200501106852
)), .Names = c("x", "y"), row.names = c(NA, -3L), class = "data.frame")

Then, if someone wants to "copy" your data.frame, he just has to run the following:

> copied_df <- structure(list(x = c(0.241188014013708, -0.522256746461544, 0.382485333260912
+     ), y = c(0.666080872170054, -0.251265630627216, -1.84200501106852
+     )), .Names = c("x", "y"), row.names = c(NA, -3L), class = "data.frame")

I put "copy" in quotes because note the following:

> identical(example_df,copied_df)
[1] FALSE
> all.equal(example_df,copied_df)
[1] TRUE

identical yields false because when you post your dput output, often the numbers get rounded to a certain decimal point.

like image 70
Xu Wang Avatar answered Dec 31 '25 05:12

Xu Wang



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!