小编Chi*_*cht的帖子

as.tibble(),as_data_frame()和tbl_df()之间有什么区别?

我记得读书的地方,as.tibble()是一个别名as_data_frame(),但我不知道到底是什么的别名是在编程术语.它与包装器类似吗?

所以我想我的问题大概可以归结为在两者之间可能的用法区别tbl_df()as_data_frame():什么是它们之间的区别,如果有的话?

更具体地说,给定(非tibble)数据帧df,我经常使用以下方法将其转换为tibble:

df <- tbl_df(df)
Run Code Online (Sandbox Code Playgroud)

岂不

df <- as_data_frame(df)
Run Code Online (Sandbox Code Playgroud)

做同样的事?如果是这样,是否存在其他两种功能tbl_df()并且as_data_frame()不能互换使用以获得相同结果的情况?

R文件说,

tbl_df() 将论证转发给 as_data_frame()

这是否意味着它tbl_df()是一个包装或别名as_data_frame()?R文档似乎没有说什么as.tibble(),我忘记了我读到它的别名as_data_frame().此外,显然 as_tibble()是另一个别名as_data_frame().

如果这四个函数的功能完全相同,那么赋予一个函数四个不同名称的意义何在?这不是更有说服力而不是有用吗?

terminology r dplyr tidyverse tibble

14
推荐指数
1
解决办法
1万
查看次数

R 中“因子”和“字符串”数据类型之间的实际区别是什么?

在其他编程语言中,我熟悉字符串数据类型。除了这种数据类型,R 还有因子数据类型。我是 R 语言的新手,所以我试图围绕这种新数据类型背后的意图。

问题: R 中“因子”和“字符串”数据类型之间的实际区别是什么?

我知道(在概念/哲学层面上)因子数据类型应该对分类随机变量的值进行编码,但我不明白(在实际层面上)为什么字符串数据类型不足以达到这个目的。

看似具有用于相同实际目的的重复数据类型将是糟糕的设计。然而,如果 R 在这样一个基本层面上真的设计得很糟糕,那么它达到它所拥有的受欢迎程度的可能性就会大大降低。因此,要么发生了非常不可能的事件,要么我误解了因子数据类型的实际意义/目的。

尝试:我能想到的一件事是“因子级别”的概念,可以为因子分配排序(不能对字符串进行排序),这在描述“有序分类变量”时很有帮助,即分类具有顺序的变量(例如“低”、“中”、“高”)。

(尽管即使这样似乎也不会严格要求因数。由于排序始终是线性的,即没有真正的偏序,在可数集合上,我们总是可以使用从整数的某些子集到字符串的映射来完成相同的操作有问题——但是在实践中,一遍又一遍地实施可能会很痛苦,而且一个幼稚的实施可能不会像 R 中内置的因素和因素级别的实施那样有效。)

然而,并非所有分类变量都是有序的,有些是“名义”的(即没有顺序)。然而,“因子”和“因子水平”似乎仍然与这些“名义分类变量”一起使用。为什么是这样?即对这些变量使用因子而不是字符串有什么实际好处?

唯一的其他信息,我能找到关于这个问题的是下面的报价在这里

此外,将字符串变量存储为因子变量可以更有效地利用内存。

这是什么原因?这仅适用于“有序分类变量”,还是适用于“名义分类变量”?

相关但不同的问题:这些问题似乎相关,但并没有具体解决我的问题的核心——即因子和字符串之间的差异,以及为什么有这种差异是有用的(从编程的角度来看,而不是统计的角度) )。

R 中有序和无序因子变量之间的区别
有序与水平的因子 对
分类变量进行排序是否有优势?
R 中的 factor() 命令仅用于具有层次结构级别的分类变量?

r

6
推荐指数
1
解决办法
5961
查看次数

NumPy多维数组迭代如何工作?(有无nditer)

注意:我不确定这是否重复-请让我知道是否重复(并结束问题)。

如果有一个一维NumPy数组vector,则如果编写形式为以下形式的for循环:

for element in vector :
    print(element)
Run Code Online (Sandbox Code Playgroud)

结果将打印NumPy数组的每个元素。

如果有一个二维NumPy数组matrix,则如果编写一个for循环,其形式为:

for vector in matrix :
    print(vector)
Run Code Online (Sandbox Code Playgroud)

结果将打印二维NumPy数组的每一行,即它将打印一维NumPy数组,并且不会单独打印数组的每个元素。

但是,如果将for循环写为:

import numpy
for element in numpy.nditer(matrix) :
     print(element)
Run Code Online (Sandbox Code Playgroud)

结果打印二维NumPy数组的每个元素。

问题:如果拥有3维NumPy数组会发生什么tensor

一种。如果编写以下形式的for循环:

for unknownType in tensor :
     print(unknownType)
Run Code Online (Sandbox Code Playgroud)

这会打印出组成的二维NumPy(子)数组tensor吗?

即对于n维NumPy数组nArray,是否for unknownType in nArray :迭代组成n(N-1)维的NumPy(子)数组nArray

b。如果编写以下形式的for循环:

for unknownType in numpy.nditer(tensor) :
    print(unknownType)
Run Code Online (Sandbox Code Playgroud)

这会印出的元素tensor吗?还是会打印组成的二维二维NumPy(子)数组的组成一维NumPy(子)数组tensor

即对于n维NumPy数组nArray,是否for unknownType in …

python arrays for-loop numpy multidimensional-array

3
推荐指数
2
解决办法
5817
查看次数

R中函数的语法?

以下两个是等价的,即它们是否定义了相同的功能?

function(df) {lm(mpg ~ wt, data=df)}
Run Code Online (Sandbox Code Playgroud)

function(df) lm(mpg ~ wt, data=df)
Run Code Online (Sandbox Code Playgroud)

特别是,我很困惑为什么可以在R中编写没有花括号的函数.

当函数定义扩展到多行时,是否只需要大括号来定义函数?

(也许关于R和Python技术上如何支持来自C的分号,但是使用它们被认为是不好的做法?)

这似乎可以解释为什么人们在定义匿名函数时通常不使用大括号,因为匿名函数通常很短,因此可以放在一行上,因此不需要大括号.

但是可以传递定义超过一行的匿名函数(显然这可能是不好的做法,但这不是我的观点)?

如果有可能,那是否需要大括号?

syntax r

2
推荐指数
1
解决办法
835
查看次数