当熊猫发出这个警告时到底发生了什么?我应该担心吗?
In [1]: read_csv(path_to_my_file)
/Users/josh/anaconda/envs/py3k/lib/python3.3/site-packages/pandas/io/parsers.py:1139:
DtypeWarning: Columns (4,13,29,51,56,57,58,63,87,96) have mixed types. Specify dtype option on import or set low_memory=False.
data = self._reader.read(nrows)
Run Code Online (Sandbox Code Playgroud)
我认为这意味着Pandas无法从这些列的值推断出类型.但如果是这种情况,Pandas最终会使用哪种类型的列?
此外,事后可以恢复类型吗?(在收到警告后),或者是否存在我可能无法正确恢复原始信息的情况,我应该预先指定类型?
最后,究竟是如何low_memory=False解决问题的?
我正在尝试应用以下代码:
library(FinancialInstrument)
stock(TLT, currency="USD", multiplier=1)
Run Code Online (Sandbox Code Playgroud)
但我收到以下错误:C 堆栈使用 19924192 太接近限制
这个问题之前已经讨论过,最好的答案建议使用ulimit命令。
有人可以详细说明如何一步一步执行此操作吗?或者是否有其他解决方案可以解决此问题?
我有一个appt91.2MB 的数据框,包含29255个51变量的观察.
当我试图检查它的结束时tail(appt),我得到了错误
Error: C stack usage 20212630 is too close to the limit
我不知道如何解决这个问题.关于我能做什么的任何建议?
作为附加信息,我同时在内存中有一些几乎相当大的其他变量,包括一个90.2MB字符向量和一个42.3MB数据帧77405 obs.x 60个变量.调用tail这两个其他变量不会触发任何错误.
编辑:
我已经缩小了只有在访问最后一行时才会发生错误.即appt[29254, ]很好,appt[29255, ]抛出错误.
我正在尝试使用R中spread()的tidyr包中的函数来处理具有大约300万个观测值的数据帧.它返回以下错误消息:
Error : C stack usage 26498106 is too close to the limit
Run Code Online (Sandbox Code Playgroud)
当我跑步时Cstack_info(),它告诉我
> Cstack_info()
size current direction eval_depth
7969177 15272 1 2
Run Code Online (Sandbox Code Playgroud)
根据这个问题的答案中的建议,我尝试通过ulimit -s 32768在终端窗口中运行并从终端打开Rstudio来增加堆栈大小.但是,当我尝试这个时,输出Cstack_info()没有改变,当我运行我的代码时,我收到相同的错误消息.继同一个早期问题的另一个答案后,我尝试更新R和Rstudio,也无济于事.我在这做错了什么?
我在mac os x 10.12.2上运行R 3.3,内存为16 GB.
我正在尝试计算R中两个向量之间的汉明距离.我目前正在尝试使用"e1071"包和hamming.distance函数,如下所示:
library(e1071)
H <- hamming.distance(X)
Run Code Online (Sandbox Code Playgroud)
其中X是一个带有2行的数据帧,并且(在我的特定数据中)有667列,每个观察值为0或1.
最初我得到了错误:
Error: evaluation nested too deeply: infinite recursion / options(expressions=)?
Run Code Online (Sandbox Code Playgroud)
经过一些研究,似乎一个修复可能会增加R中的基本选项.我通过选项(表达式= 5000),然后尝试使用不同的值代替5000.但这只产生错误:
Error: C stack usage is too close to the limit
Run Code Online (Sandbox Code Playgroud)
我不是一个程序员,并且针对这个最近的错误的修复似乎与包e1071中的某些东西有关,可能没有正确调用(或在正确的时间).
关于我做错了什么的任何想法?我最终想要大量向量之间的汉明距离,这只是一个起点.如果这与内存分配有关,有什么建议可以处理吗?
我正在尝试将一个大文件(~5GB)读入 R 并处理数据。我可以成功读取整个 5GB 文件,但是当我应用我的处理时,麻烦就来了。我对 R 的内存基础知识不太了解,希望你们中的一些人能帮助我更好地理解。
这是我正在运行的示例
file = fread("file.txt") #file.txt is 5GB of unprocessed data
t.str <-strptime(file$time, "%m/%d/%Y %H:%M:%S"")#convert column to date class
month = as.numeric(format(t.str, "%m"))#create vector from file column
high = ifelse(file$age>70,1,0) #create vector from file column
#There are about ten more lines that operate on this file.
Run Code Online (Sandbox Code Playgroud)
fread 在读取文件方面做得很好。我在“文件”数据框架上运行的前三到四个操作有效。但是,在运行一定数量后,我收到一条错误消息:
C stack usage 19923892 is too close to the limit
Run Code Online (Sandbox Code Playgroud)
我很确定问题不是我正在运行的某个命令,因为它适用于较小的数据集。我读过一些关于堆栈是什么的内容,但这个警告对我来说并不完全有意义。这是否意味着 R 正在使用指针来遍历这些大向量,而我已经用完了指针空间(?)。我在这里读到了类似的问题:
一位用户建议增加 shell 中的堆栈大小。我尝试进一步研究这一点,但我不确定如何继续。这是他们的建议:
$ ulimit -s # print default
8192
$ …Run Code Online (Sandbox Code Playgroud) 每次我在 RStudio 中打开新会话时,都会收到错误消息:
Error: C stack usage 7953936 is too close to the limit
Run Code Online (Sandbox Code Playgroud)
根据此处和此处发布的类似问题的建议,我尝试在终端中使用 ulimit 命令,但出现以下错误。
Isabels-MacBook-Pro ~ % ulimit -s
8176
Isabels-MacBook-Pro ~ % R --slave -e 'Cstack_info()["size"]'
Error: C stack usage 7954496 is too close to the limit
Execution halted
Run Code Online (Sandbox Code Playgroud)
然而,当我单独运行 ulimit 时,我得到:
Isabels-MacBook-Pro ~ % ulimit
unlimited
Run Code Online (Sandbox Code Playgroud)
为了再次检查,我尝试再次将其设置为无限制:
Isabels-MacBook-Pro ~ % ulimit -s unlimited
Run Code Online (Sandbox Code Playgroud)
但随后出现新错误:
Isabels-MacBook-Pro ~ % R --slave -e 'Cstack_info()["size"]'
Error: evaluation nested too deeply: infinite recursion / options(expressions=)?
Execution …Run Code Online (Sandbox Code Playgroud) 我有一个 1.8m 字符串,我需要将其分割为一个 50 个字符串,该字符串出现一次非常接近 1.8m 字符串的开头(大约 10k 个字符)
使用strsplit()错误
long_string %>% strsplit(., fifty_character_string)
# Error: C stack usage 9065064 is too close to the limit
Run Code Online (Sandbox Code Playgroud)
我尝试用这种方法和这个问题解决特定错误,但到目前为止还没有运气。
所以现在我正在研究是否有一种更有效的内存方法来将一个很长的字符串分成两部分。我不太可能需要多次执行此操作,因此我愿意接受只需完成工作的黑客方法