我的R代码有一个很长的行.非常长一行大约24.813个字符.这一行的 struct 看起来像

x = c(1, 2, 3, 4, [...], 4317, 4318, 4319)

这一行的正下方是一个类似的行,它更短,因为它只包含整数:

y = c(0, 1, 0, 0, 1 [...], 1, 0, 1)

这会引发一个错误:

Error: unexpected symbol in: 
", 790, 791, 792, [...], 825, 826, 827,
y"

790大约在位置3.844.我已经仔细判断了一下:这个位置没有什么异常.

QUESTION: Is there a maximumm length for a line in R?

EDIT个 我猜@Roland建议的就是我正在寻找的肮脏的解决方案.换行符使其起作用.是的,我知道我应该从文件中读取数据:-)谢谢大家!

推荐答案

最大线路长度

根据R核心团队手册,An Introduction to R

在控制台输入的命令行限制为4到4095个字节(不是字符).

有关的脚注如下:

有些控制台不允许你输入更多的内容,而在那些做的控制台中,有些会默默地丢弃多余的内容,有些会把它当作下一行的开始.

在IDE中,这种行为似乎不一致.我刚刚创建了一行220k ASCII字符(所以220k字节),并能够在VS代码中解析它.>>

# real version repeats this string until it is over 220k characters long
nchar(
    "very_long_string_very_long_string_very_long_string_very_long_string_"
)

VS代码输出:

[1] 221760

但我在RStudio中try 了相同的行,但它无法处理它.RStudio输出:

tringvery_long_stringvery_long_stringvery_long_string"
+ )
+ 
+ 

RStudio似乎正在展示脚注中的行为,并默默地丢弃多余的部分(包括最后的引用).正如An Introduction to R所说:

如果一个命令在一行的末尾没有完成,R将给出不同的提示符,默认情况下在第二行和后续行上为+,并继续读取输入,直到命令在语法上完成.

在任何情况下,尽管在R手册中,这个问题似乎与IDE有关.我测试了VS Code是否可以处理长度超过100万个字符的行(因此超过1MB),并且它可以.如果需要的话,也许还有另一个使用VS代码的原因,尽管我想不出有什么好的理由让代码中有这么长的一行.

最大向量长度

矢量也有一个最大长度,这取决于你是否使用32/64位R,R版本和矢量类型.它可能是2^52—1个元素的整数或数字向量,在一台不太老的计算机上有一个相当现代的R版本.参见R内部的Long vectors.

R相关问答推荐

使用scale_x_continuous复制ggplot 2中的离散x轴

根据列表中项目的名称多次合并数据框和列表

为什么当我try 在收件箱中使用合并功能时会出现回收错误?

如何在R中添加截止点到ROC曲线图?

如何在kableextra调用cell_spec()中忽略NA?

Ggplot2中的重复注记

如果某些列全部为NA,则更改列

在ggplot2中更改小提琴情节的顺序

将多列合并为单独的名称—值对

如何写商,水平线,在一个单元格的表在R

`lazy_dt`不支持`dplyr/across`?

您是否可以使用facet_rap设置一个较低的限制来对ggmap上的比例中断进行zoom ?

过滤名称以特定字符串开头的文件

按组内中位数分类

有没有办法将不等长的列表转换为R中的数据帧

如何移动点以使它们的打印不重叠

为什么不能使用lApply在包装函数中调用子集

我正在try 创建一个接近cos(X)的值的While循环,以便它在-或+1-E10范围内

如何将字符类对象中的数据转换为R中的字符串

Gggvenn为Venn增加了不存在的价值