我试图使用structure()
函数来创建R. 我看到这样的事情结构()中的“class”参数是什么?
structure(mydataframe, class="data.frame")
没有类从哪儿来的数据帧?我看到有人在使用它,但它没有在R文档中列出。
这是不是程序员用另一种语言的经验和拿它了吗?它的工作原理。我很困扰。
编辑:我意识到dput(),是实际创建的数据帧寻找这样的。我明白了,欢呼!
我试图使用structure()
函数来创建R. 我看到这样的事情结构()中的“class”参数是什么?
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")
然后,如果有人想“复制”你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
输出时,通常会将数字四舍五入为某个小数点。
是的,我做了,很好猜! – user1061210
我抓我的头,想知道什么“R文档”就不用说了一些关于“下课”。这是该语言的一个非常基本的组成部分,以及函数如何应用。你应该输入该读:
?class
?methods
我想对结构的帮助并没有把类作为参数列出... – Tommy
它没有,(也没有讨论'data.frame'或'list'或'row.names'),但它链接到help(attr)提到'class'是一个典型的属性,并提供了一个到'class'函数的链接。不能期望帮助页面成为一本完整的书,批评在两次点击中提供所寻求的信息的帮助页是不公平的。 –
谢谢你让我知道。但是,您必须单击右侧子链接,然后再次子链接,才能将class()实际存在。即使对专家来说,这可能是令人困惑和乏味的工作。 反正,我解决了问题,看我的编辑。 – user1061210
“阶级”不是一个具体的参数传递给structure
功能 - 这就是为什么你没有在帮助文件中找到它。
structure
接受一个对象,然后任意数量的名称/值对,并将它们设置为在物体上的属性。在这种情况下,class
就是这样一个属性。你可以试试这虚构的“富”和“酒吧”属性添加到矢量:
x <- structure(1:3, foo=42, bar='hello')
attributes(x)
#$foo
#[1] 42
#
#$bar
#[1] "hello"
正如约书亚乌尔里希和王旭提到的,你不应该创建一个data.frame
这样。
为什么你使用'structure'创建'data.frame'? –
我强烈建议你不要以这种方式创建data.frame,除非你知道_exactly_你在做什么。您可能会创建一个不合格的data.frame,这会在代码中稍后导致难以发现的错误。 –