Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/82.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
read.csv不';似乎无法检测R4.0.0中的因素_R_Categorical Data_Read.csv_R 4.0.0 - Fatal编程技术网

read.csv不';似乎无法检测R4.0.0中的因素

read.csv不';似乎无法检测R4.0.0中的因素,r,categorical-data,read.csv,r-4.0.0,R,Categorical Data,Read.csv,R 4.0.0,我最近从R3.5.1更新到R4.0.0。read.csv的行为似乎已经改变-当我在R4.0.0中加载.csv文件时,不会自动检测到系数,而是将其识别为字符。我还在我的机器上运行3.5.1,当使用相同的代码在3.5.1中加载相同的文件时,因子被识别为因子。这有点不太理想 有什么建议吗 我正在运行Windows 10 Pro并在Excel 2013中创建.csv文件。正如Ronak Shah在对您的问题的评论中所说,R4.0.0更改了read.table()(因此它的包装器包括read.csv(

我最近从R3.5.1更新到R4.0.0。
read.csv
的行为似乎已经改变-当我在R4.0.0中加载.csv文件时,不会自动检测到系数,而是将其识别为字符。我还在我的机器上运行3.5.1,当使用相同的代码在3.5.1中加载相同的文件时,因子被识别为因子。这有点不太理想

有什么建议吗


我正在运行Windows 10 Pro并在Excel 2013中创建.csv文件。

正如Ronak Shah在对您的问题的评论中所说,R4.0.0更改了
read.table()
(因此它的包装器包括
read.csv()
)处理字符向量的默认行为。关于这个问题一直有很长的争论,但基本上
stringsAsFactors==T
设置是自R出现以来的默认设置,因为它有助于节省内存,因为在R中实现因子变量的方式(本质上,它们是一个整数向量,上面添加了因子级别的信息)。现在这样做的理由不多了,因为记忆更丰富了,而且这种选择往往会产生意想不到的副作用

你可以阅读更多关于你的特殊问题,以及哈德利·威克姆的《高级R》中向量的其他特性。在那里,他给出了两篇文章,详细阐述了违约行为为何如此。
这是一个又是另一个。我还建议你看看哈德利的书,如果你已经对R有一些经验的话,它对我学习该语言的一些不太明显的特性帮助很大。

正如Ronak Shah在对你的问题的评论中所说,R4.0.0改变了
read.table()的默认行为。
(因此它的包装器包括
read.csv()
)处理字符向量。关于这个问题一直有很长的争论,但基本上
stringsAsFactors==T
设置是自R出现以来的默认设置,因为它有助于节省内存,因为在R中实现因子变量的方式(本质上,它们是一个整数向量,上面添加了因子级别的信息)。现在这样做的理由不多了,因为内存要丰富得多,而且这个选项通常会产生意外的副作用

你可以阅读更多关于你的特殊问题以及Hadley Wickham的《高级R》中向量的其他特性。在这篇文章中,他给出了两篇文章,详细阐述了为什么默认行为是这样的。
是一个,也是另一个。我还建议你看看哈德利的书,如果你已经对R有一些经验的话,它对我学习该语言的一些不太明显的特性有很大的帮助。

正如在座的每个人所说,在R 4.0.0中默认行为已经改变,字符串不再自动转换为因子。这影响各种函数,包括
read.csv()
data.frame()
。但是一些明确用于处理因子的函数不会受到影响。这些函数包括
expand.grid()
as.data.frame.table()

绕过此更改的一种方法是设置全局选项:

options(stringsAsFactors = TRUE)
但这也将被弃用,最终您将不得不手动将字符串转换为因子

做出这种决定的主要原因似乎是可再现性。自动字符串到因子转换生成因子级别,这些级别取决于系统使用的区域设置。因此,如果您来自俄罗斯,并与您在日本的朋友共享自动转换因子的脚本,他可能会得到不同的事实顺序或水平


你可以在Kurt Hornik的“R Blog”帖子上读到更多关于这一点的信息,正如大家所说的-默认行为在R 4.0.0中已经改变,字符串不再自动转换为因子。这会影响各种功能,包括
read.csv()
data.frame()
。但是,一些明确用于处理因子的函数不受影响。这些函数包括
expand.grid()
as.data.frame.table()

绕过此更改的一种方法是设置全局选项:

options(stringsAsFactors = TRUE)
但这也将被弃用,最终您将不得不手动将字符串转换为因子

做出这种决定的主要原因似乎是可再现性。自动字符串到因子转换生成因子级别,这些级别取决于系统使用的区域设置。因此,如果您来自俄罗斯,并与您在日本的朋友共享自动转换因子的脚本,他可能会得到不同的事实顺序或水平


库尔特·霍尼克(Kurt Hornik)在“R博客”上发表了一篇关于这一点的文章,这是R 4.0.0中的一个主要变化。
default.stringsAsFactors()
FALSE
.Ref:。如果要将它们作为因子来读取,请明确指定
stringsAsFactors=TRUE
。此处是指向的链接。这是R4.0.0中的一个主要更改。
default.stringsAsFactors()
FALSE
.Ref:。如果要将它们作为因子来读取,请明确指定
stringsAsFactors=TRUE
。这里是指向的链接。我认为当R的字符类型被转换为hasked存储时,内存使用问题消失了。因此,向量中100字节字符值的100个实例不再需要100*100字节,而是需要100*100字节r只有100*2+100字节,所以就存储而言,这几乎是一个因素。不确定这是什么时候发生的。我想可能是r 3.4???,看看Ulrich的发布日期,并与CRAN中的发布日期进行比较,我可以看到它发生在v3.4之前几年。我认为当r的字符类型出现时,内存使用问题就消失了所以向量中100字节字符值的100个实例不再需要100*100字节,而是只需要100*2+100字节,所以它与因子a几乎相同