我正在尝试使用structure()
函数在R中创建数据框。
我看到了类似的东西
structure(mydataframe, class="data.frame")
班级来自哪里?我看到有人使用它,但它没有在R文档中列出。
这是程序员用另一种语言学习并将其结束的东西吗?它有效。我很困惑。
编辑:我实现了dput(),实际创建的数据框是这样的。我弄明白了,欢呼!
答案 0 :(得分:7)
您可能看到有人使用dput
。 dput
用于发布(通常是短期)数据。但通常你不会创建这样的数据框。您通常会使用data.frame
函数创建它。见下文
> 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")
然后,如果有人想要“复制”你的data.frame
,他只需运行以下内容:
> 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")
我将“复制”放在引号中,因为请注意以下内容:
> identical(example_df,copied_df)
[1] FALSE
> all.equal(example_df,copied_df)
[1] TRUE
identical
产生错误,因为当您发布dput
输出时,数字通常会舍入到某个小数点。
答案 1 :(得分:4)
'class'不是structure
函数的特定参数 - 这就是为什么你没有在帮助文件中找到它。
structure
获取一个对象,然后获取任意数量的名称/值对,并将它们设置为对象上的属性。在这种情况下,class
就是这样一个属性。您可以尝试将虚构的'foo'和'bar'属性添加到矢量中:
x <- structure(1:3, foo=42, bar='hello')
attributes(x)
#$foo
#[1] 42
#
#$bar
#[1] "hello"
正如Joshua Ulrich和Xu Wang所提到的那样,你不应该像这样创建一个data.frame
。
答案 2 :(得分:2)
我在挠头,想知道什么是“R文件”不会对“课堂”说些什么。它是该语言的一个非常基本的组成部分,以及如何应用函数。你应该输入这个并阅读:
?class
?methods