suppressPackageStartupMessages(library("tidyverse"))
package 㤼㸱tidyverse㤼㸲 was built under R version 3.6.3
1. What does hms::hms(3600)
return? How does it print? What primitive type is the augmented vector built on top of? What attributes does it use?
x <- hms::hms(3600)
class(x)
[1] "hms" "difftime"
x
01:00:00
hms::hms
returns an object of class class(x)
, and prints the time in %H:%M:%S
format.
The primitive type is a double
typeof(x)
[1] "double"
The attributes is uses are “units” and “class”.
attributes(x)
$units
[1] "secs"
$class
[1] "hms" "difftime"
2. Try and make a tibble that has columns with different lengths. What happens?
If I try to create a tibble with a scalar and column of a different length there are no issues, and the scalar is repeated to the length of the longer vector.
tibble(x = 1, y = 1:5)
However, if I try to create a tibble with two vectors of different lengths (other than one), the tibble function throws an error.
# tibble(x = 1:3, y = 1:4)
#> Error: Tibble columns must have consistent lengths, only values of length one are recycled: * Length 3: Column `x` * Length 4: Column `y`
3. Based on the definition above, is it OK to have a list as a column of a tibble?
If I didn’t already know the answer, what I would do is try it out. From the above, the error message was about vectors having different lengths. But there is nothing that prevents a tibble from having vectors of different types: doubles, character, integers, logical, factor, date. The later are still atomic, but they have additional attributes. So, maybe there won’t be an issue with a list vector as long as it is the same length.
tibble(x = 1:3, y = list("a", 1, list(1:3)))
It works! I even used a list with heterogeneous types and there wasn’t an issue. In following sections we’ll see that list vectors can be very useful: for example, when processing many different models.
LS0tDQp0aXRsZTogIkF1Z21lbnRlZCB2ZWN0b3JzIg0Kb3V0cHV0OiANCiAgaHRtbF9ub3RlYm9vazoNCiAgICB0b2M6IHRydWUNCiAgICB0b2NfZmxvYXQ6IHRydWUNCi0tLQ0KDQpgYGB7cn0NCnN1cHByZXNzUGFja2FnZVN0YXJ0dXBNZXNzYWdlcyhsaWJyYXJ5KCJ0aWR5dmVyc2UiKSkNCmBgYA0KDQojIyMgMS4gV2hhdCBkb2VzIGBobXM6OmhtcygzNjAwKWAgcmV0dXJuPyBIb3cgZG9lcyBpdCBwcmludD8gV2hhdCBwcmltaXRpdmUgdHlwZSBpcyB0aGUgYXVnbWVudGVkIHZlY3RvciBidWlsdCBvbiB0b3Agb2Y/IFdoYXQgYXR0cmlidXRlcyBkb2VzIGl0IHVzZT8NCg0KYGBge3J9DQp4IDwtIGhtczo6aG1zKDM2MDApDQpjbGFzcyh4KQ0KeA0KYGBgDQoNCmBobXM6Omhtc2AgcmV0dXJucyBhbiBvYmplY3Qgb2YgY2xhc3MgYGNsYXNzKHgpYCwgYW5kIHByaW50cyB0aGUgdGltZSBpbiBgJUg6JU06JVNgIGZvcm1hdC4NCg0KVGhlIHByaW1pdGl2ZSB0eXBlIGlzIGEgZG91YmxlDQoNCmBgYHtyfQ0KdHlwZW9mKHgpDQpgYGANCg0KVGhlIGF0dHJpYnV0ZXMgaXMgdXNlcyBhcmUgInVuaXRzIiBhbmQgImNsYXNzIi4NCg0KYGBge3J9DQphdHRyaWJ1dGVzKHgpDQpgYGANCg0KIyMjIDIuIFRyeSBhbmQgbWFrZSBhIHRpYmJsZSB0aGF0IGhhcyBjb2x1bW5zIHdpdGggZGlmZmVyZW50IGxlbmd0aHMuIFdoYXQgaGFwcGVucz8NCg0KSWYgSSB0cnkgdG8gY3JlYXRlIGEgdGliYmxlIHdpdGggYSBzY2FsYXIgYW5kIGNvbHVtbiBvZiBhIGRpZmZlcmVudCBsZW5ndGggdGhlcmUgYXJlIG5vIGlzc3VlcywgYW5kIHRoZSBzY2FsYXIgaXMgcmVwZWF0ZWQgdG8gdGhlIGxlbmd0aCBvZiB0aGUgbG9uZ2VyIHZlY3Rvci4NCg0KYGBge3J9DQp0aWJibGUoeCA9IDEsIHkgPSAxOjUpDQpgYGANCg0KSG93ZXZlciwgaWYgSSB0cnkgdG8gY3JlYXRlIGEgdGliYmxlIHdpdGggdHdvIHZlY3RvcnMgb2YgZGlmZmVyZW50IGxlbmd0aHMgKG90aGVyIHRoYW4gb25lKSwgdGhlIHRpYmJsZSBmdW5jdGlvbiB0aHJvd3MgYW4gZXJyb3IuDQoNCmBgYHtyfQ0KIyB0aWJibGUoeCA9IDE6MywgeSA9IDE6NCkNCiM+IEVycm9yOiBUaWJibGUgY29sdW1ucyBtdXN0IGhhdmUgY29uc2lzdGVudCBsZW5ndGhzLCBvbmx5IHZhbHVlcyBvZiBsZW5ndGggb25lIGFyZSByZWN5Y2xlZDogKiBMZW5ndGggMzogQ29sdW1uIGB4YCAqIExlbmd0aCA0OiBDb2x1bW4gYHlgDQpgYGANCg0KIyMjIDMuIEJhc2VkIG9uIHRoZSBkZWZpbml0aW9uIGFib3ZlLCBpcyBpdCBPSyB0byBoYXZlIGEgbGlzdCBhcyBhIGNvbHVtbiBvZiBhIHRpYmJsZT8NCg0KSWYgSSBkaWRu4oCZdCBhbHJlYWR5IGtub3cgdGhlIGFuc3dlciwgd2hhdCBJIHdvdWxkIGRvIGlzIHRyeSBpdCBvdXQuIEZyb20gdGhlIGFib3ZlLCB0aGUgZXJyb3IgbWVzc2FnZSB3YXMgYWJvdXQgdmVjdG9ycyBoYXZpbmcgZGlmZmVyZW50IGxlbmd0aHMuIEJ1dCB0aGVyZSBpcyBub3RoaW5nIHRoYXQgcHJldmVudHMgYSB0aWJibGUgZnJvbSBoYXZpbmcgdmVjdG9ycyBvZiBkaWZmZXJlbnQgdHlwZXM6IGRvdWJsZXMsIGNoYXJhY3RlciwgaW50ZWdlcnMsIGxvZ2ljYWwsIGZhY3RvciwgZGF0ZS4gVGhlIGxhdGVyIGFyZSBzdGlsbCBhdG9taWMsIGJ1dCB0aGV5IGhhdmUgYWRkaXRpb25hbCBhdHRyaWJ1dGVzLiBTbywgbWF5YmUgdGhlcmUgd29u4oCZdCBiZSBhbiBpc3N1ZSB3aXRoIGEgbGlzdCB2ZWN0b3IgYXMgbG9uZyBhcyBpdCBpcyB0aGUgc2FtZSBsZW5ndGguDQoNCmBgYHtyfQ0KdGliYmxlKHggPSAxOjMsIHkgPSBsaXN0KCJhIiwgMSwgbGlzdCgxOjMpKSkNCmBgYA0KDQpJdCB3b3JrcyEgSSBldmVuIHVzZWQgYSBsaXN0IHdpdGggaGV0ZXJvZ2VuZW91cyB0eXBlcyBhbmQgdGhlcmUgd2FzbuKAmXQgYW4gaXNzdWUuIEluIGZvbGxvd2luZyBzZWN0aW9ucyB3ZeKAmWxsIHNlZSB0aGF0IGxpc3QgdmVjdG9ycyBjYW4gYmUgdmVyeSB1c2VmdWw6IGZvciBleGFtcGxlLCB3aGVuIHByb2Nlc3NpbmcgbWFueSBkaWZmZXJlbnQgbW9kZWxzLg==