相关疑难解决方法(0)

"尚未支持长向量"Rmd中的错误但R Script中没有

我正在使用R 3.1和RStudio 0.99运行矩阵.

我有我的R脚本和cmd +输入它没有问题.

我为报告创建了一个Rmd,但是我有这个错误

Error in lazyLoadDBinsertVariable(vars[i], from, datafile, ascii, compress,  : 
  long vectors not supported yet: ../../../../R-3.3.1/src/main/connections.c:5600
Calls: <Anonymous> ... <Anonymous> -> <Anonymous> -> lazyLoadDBinsertVariable
Execution halted
Run Code Online (Sandbox Code Playgroud)

有没有办法绕过这个错误?

这似乎是R大型矩阵的重复:尚未支持长向量

但不同之处在于,这仅在尝试创建Rmd时发生,而不是在任何其他情况下

r rstudio knitr r-markdown

45
推荐指数
2
解决办法
5489
查看次数

为什么R会使用"L"后缀来表示整数?

在R中我们都知道,对于那些我们想要确保处理整数以使用"L"后缀来指定它的方式来说这很方便:

1L
# [1] 1
Run Code Online (Sandbox Code Playgroud)

如果我们没有明确告诉R我们想要一个整数,它会假设我们打算使用numeric数据类型......

str( 1 * 1 )
# num 1
str( 1L * 1L )
# int 1
Run Code Online (Sandbox Code Playgroud)

为什么"L"是首选后缀,为什么不是"我"呢?有历史原因吗?

另外,为什么R允许我做(有警告):

str(1.0L)
# int 1
# Warning message:
# integer literal 1.0L contains unnecessary decimal point 
Run Code Online (Sandbox Code Playgroud)

但不是..

str(1.1L)
# num 1.1
#Warning message:
#integer literal 1.1L contains decimal; using numeric value 
Run Code Online (Sandbox Code Playgroud)

我希望两者都返回一个错误.

parsing integer r semantics

32
推荐指数
2
解决办法
2万
查看次数

从S3读取大型csv文件到R

我需要加载一个3 GB的csv文件,其中包含大约1800万行和7列从S3到R或RStudio.我从S3读取数据的代码通常是这样的:

library("aws.s3")
obj <-get_object("s3://myBucketName/aFolder/fileName.csv")  
csvcharobj <- rawToChar(obj)  
con <- textConnection(csvcharobj)  
data <- read.csv(file = con)
Run Code Online (Sandbox Code Playgroud)

现在,由于文件比平时大得多,我收到一个错误

> csvcharobj <- rawToChar(obj)  
Error in rawToChar(obj) : long vectors not supported yet: raw.c:68
Run Code Online (Sandbox Code Playgroud)

阅读这篇文章,我理解向量太长但在这种情况下如何对数据进行子集化?还有其他建议如何处理从S3读取的较大文件?

csv r amazon-s3

9
推荐指数
2
解决办法
3262
查看次数

从大型相关矩阵中提取唯一对

我有一个相当大的数据集(约 50K 条目),我用它来生成相关矩阵。这效果很好,“仅”使用约 20GB RAM。

然后,我想从中提取唯一的成对组合并将其转换为数据框。这就是我遇到问题的地方。RAM 使用量过多或索引变量溢出。我知道有 >2B 的组合,所以我知道它的大小有点爆炸,但仍然..

我尝试了不同的方法来实现这一目标,但没有成功。

模拟数据:

df = matrix(runif(1),nrow=50000, ncol=50000, dimnames=list(seq(1,50000,by=1), seq(1,50000,by=1)))
Run Code Online (Sandbox Code Playgroud)

尝试从相关矩阵中提取上/下三角形,然后重塑它:

df[lower.tri(df, diag = T),] = NA
df = reshape2::melt(df, na.rm = T)
Run Code Online (Sandbox Code Playgroud)

崩溃:

Error in df[lower.tri(bla, diag = T), ] = NA : 
  long vectors not supported yet: ../../src/include/Rinlinedfuns.h:522
Run Code Online (Sandbox Code Playgroud)

如果您只执行以下操作,它会因相同的错误而崩溃:(df = df[lower.tri(df, diag = T),] 我确实阅读了R 中的大型矩阵:尚不支持长向量,但我发现它对我的情况没有帮助)

我也尝试过:

df = subset(as.data.frame(as.table(df)),
       match(Var1, names(annotation_table)) > match(Var2, names(annotation_table)))
Run Code Online (Sandbox Code Playgroud)

仅使用基于 R 的软件包,但最终在大约 1 天后耗尽了内存。这是 RAM 最密集的部分:as.data.frame(as.table(df))所以我也尝试用它替换它reshape2::melt(df),但它也耗尽了 RAM

我在具有 …

r matrix duplicates large-data

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