Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 结构()中的“类”参数是什么?_R - Fatal编程技术网

R 结构()中的“类”参数是什么?

R 结构()中的“类”参数是什么?,r,R,我试图使用structure函数在R中创建一个数据帧。 我看到了这样的东西 structure(mydataframe, class="data.frame") 这门课是从哪里来的?我看到有人在使用它,但它没有在R文档中列出 这是程序员用另一种语言学习并传承下来的东西吗?它是有效的。我很困惑 编辑:我意识到dput,实际上是它创建了一个像这样的数据帧。我知道了,干杯 您可能看到有人在使用dput。dput用于发布通常较短的数据。但通常不会创建这样的数据帧。您通常会使用data.frame函数创

我试图使用structure函数在R中创建一个数据帧。 我看到了这样的东西

structure(mydataframe, class="data.frame")
这门课是从哪里来的?我看到有人在使用它,但它没有在R文档中列出

这是程序员用另一种语言学习并传承下来的东西吗?它是有效的。我很困惑


编辑:我意识到dput,实际上是它创建了一个像这样的数据帧。我知道了,干杯

您可能看到有人在使用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")
我将副本放在引号中,因为请注意以下几点:

> 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

相同的结果是错误的,因为当您发布dput输出时,数字通常会四舍五入到某个小数点。

我挠头,想知道R文档中没有提到什么关于类的内容。它是语言的一个非常基本的组成部分,也是函数如何应用的。您应键入以下内容:

?class
?methods

“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。

为什么要使用结构来创建data.frame?我强烈建议您不要以这种方式创建data.frame,除非您确切知道自己在做什么。您可能会创建一个格式错误的data.frame,这将导致以后在代码中很难找到错误。它不会,也不会讨论data.frame或list或row.names,但它确实链接到helpattr,它将class作为一个典型属性,并提供指向class函数的链接。帮助页面不可能是一本完整的书,批评一个在两次点击中就提供了热门信息的页面似乎不公平。谢谢你让我知道。但,您必须单击右键子链接,然后再次单击子链接,以确定类实际上就在那个里。即使对专家来说,这也是一项令人困惑和乏味的工作。不管怎样,问题解决了,请看我的编辑。