小编Kri*_*nan的帖子

在r data.table中使用条件语句

我正在尝试使用data.table根据特定条件重新编码变量.我的原始数据集有大约30M的记录,并且所有变量创建后大约有130个变量.我使用了这里建议的方法:data.table (M1)中的条件语句以及data.table:当列名不知道时,是否有正确的方法来创建条件变量? (M2)

我的目标是获得相当于下面的代码,但使用data.table是适用的

samp$lf5 <- samp$loadfactor5

samp$lf5 <- with(samp, ifelse(loadfactor5 < 0, 0, lf5))
Run Code Online (Sandbox Code Playgroud)

我承认我不理解.SD和.SDCols,所以我可能错了.来自(M1)(M2)的代码和错误如下所示,样本数据集如下:http://goo.gl/Jp97Wn

(M1)

samp[,lf5 = if(loadfactor5 <0) 0 else loadfactor5]
Run Code Online (Sandbox Code Playgroud)

错误信息

Error in `[.data.table`(samp, , lf5 = if (loadfactor5 < 0) 0 else loadfactor5) : 
unused argument (lf5 = if (loadfactor5 < 0) 0 else loadfactor5)
Run Code Online (Sandbox Code Playgroud)

当我这样做:

samp[,list(lf5 = if(loadfactor5 <0) 0 else loadfactor5)]
Run Code Online (Sandbox Code Playgroud)

它将lf5作为列表但不作为samp data.table的一部分给出,并且并不真正应用条件,因为lf5仍然具有小于0的值.

(M2)

Col1 <- "loadfactor5"
Col2 <- "lf5"

setkeyv(samp,Col1) …
Run Code Online (Sandbox Code Playgroud)

r data.table

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

如何在Perl中同时迭代多个列表?

我需要创建一个文本文件(aptest.s),我可以用来读入另一个程序.我正在使用Perl,因为我有一个很大的列表可供使用.我的代码如下(它没有给出所需的输出 - 显示在代码和实际输出之后).任何帮助,将不胜感激.

#!/usr/bin/perl -w
chdir("D://projects//SW Model ODME");
@link = ("319-116264||319-118664","320-116380||320-116846","321-119118||321-119119","322-115298||322-119087");
@link1 = ("116264-319||118664-319","116380-320||116846-320","119118-321||119119-321","115298-322||119087-322");
open (FSAS, ">>aptest.s");
foreach $link (@link) {
    foreach $link1 (@link1){
    print FSAS "other code \n";
    print FSAS "PATHLOAD SELECTLINK=(Link=".$link."), VOL[2]=MW[1] \n";
    print FSAS "PATHLOAD SELECTLINK=(Link=".$link1."), VOL[3]=MW[2] \n";
    print FSAS "other code \n";
}
}
Run Code Online (Sandbox Code Playgroud)

实际产量:

other output
PATHLOAD SELECTLINK=(Link=319-116264||319-118664), VOL[2]=MW[1] 
PATHLOAD SELECTLINK=(Link=116264-319||118664-319), VOL[3]=MW[2] 
other output 

other output
PATHLOAD SELECTLINK=(Link=**319-116264||319-118664**), VOL[2]=MW[1] 
PATHLOAD SELECTLINK=(Link=**116380-320||116846-320**),      VOL[3]=MW[2] 
other output
Run Code Online (Sandbox Code Playgroud)

期望的输出

other output
PATHLOAD SELECTLINK=(Link=319-116264||319-118664), VOL[2]=MW[1] 
PATHLOAD SELECTLINK=(Link=116264-319||118664-319), …
Run Code Online (Sandbox Code Playgroud)

arrays perl list

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

R data.table大小和内存限制

我有一个15.4GB的R data.table对象,有2900万条记录和135个变量.我的系统和R信息如下:

Windows 7 x64 on a x86_64 machine with 16GB RAM."R version 3.1.1 (2014-07-10)" on "x86_64-w64-mingw32" 
Run Code Online (Sandbox Code Playgroud)

我得到以下内存分配错误(见图)

在此输入图像描述

我设置内存限制如下:

#memory.limit(size=7000000)
#Change memory.limit to 40GB when using ff library
memory.limit(size=40000)
Run Code Online (Sandbox Code Playgroud)

我的问题如下:

  1. 我应该将内存限制更改为7 TB
  2. 将文件分成块并执行该过程?
  3. 还有其他建议吗?

r data.table

7
推荐指数
1
解决办法
4582
查看次数

R Markdown Table 1000分离器

我试图发布一个包含1000个分隔符的表,我对此没有任何好运.我按照这里的链接:在knitr上设置全局千位分隔符,但没有取得多大成功.

我的样本数据集在这里:https://goo.gl/G7sZhr

RMarkdown代码在这里:

---
title: "Table Example"
author: "Krishnan Viswanathan"
date: "August 4, 2015"
output: html_document
---
Run Code Online (Sandbox Code Playgroud)

加载数据

{r, results='asis', message = FALSE, tidy=TRUE} load("i75_from_flow.RData") library(data.table)

{r, results='asis', echo=FALSE,message = FALSE, tidy=TRUE} i75_from_flow <- i75_from_flow[order(-Tons),] knitr::kable(i75_from_flow)

但是,当我在RMarkdown文档中包含这段代码(knit_hook $ set)时,我会收到错误.

```{r, results='asis', echo=FALSE,message = FALSE, tidy=TRUE}
i75_from_flow <- i75_from_flow[order(-Tons),]
knit_hooks$set(inline = function(x) {
prettyNum(x, big.mark=",")
})
knitr::kable(i75_from_flow)
```
Run Code Online (Sandbox Code Playgroud)

错误:

# object knit_hooks not found.
Run Code Online (Sandbox Code Playgroud)

任何关于我做错了什么以及如何解决这个问题的见解都非常感谢.

谢谢,

克里希南

r-markdown

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

当矩阵不对称时如何在 R 中使用库(circlize)

我正在尝试使用该circlize库绘制流程图。我的代码在下面,数据集 (i75_from_flow.RData) 在这里:https ://drive.google.com/file/d/0B0hTmthiX5dpbFJFc2hfN1Zqd1k/view

library(reshape)
t1 <- cast(i75_from_flow, ORIGFIPS ~ TERMFIPS)
i75_from_flow2<- data.matrix(subset(t1, select=-c(1)))
rownames(i75_from_flow2) <- t1$ORIGFIPS
colnames(i75_from_flow2) <- colnames(i75_from_flow2)

library(circlize)
circos.par(gap.degree = 8)
chordDiagram(i75_from_flow2, grid.col= length(union(rownames(i75_from_flow2),colnames(i75_from_flow2))), directional = TRUE, annotationTrack = "grid",
         preAllocateTracks = list(list(track.height = 0.05),
                                  list(track.height = 0.05)))

circos.trackPlotRegion(track.index = 1, panel.fun = function(x, y) {
xlim = get.cell.meta.data("xlim")
ylim = get.cell.meta.data("ylim")
sector.index = get.cell.meta.data("sector.index")
circos.text(mean(xlim), mean(ylim), sector.index, facing = "inside", niceFacing = TRUE)
}, bg.border = NA)
Run Code Online (Sandbox Code Playgroud)

当我运行上面的代码时,在代码中的chordDiagramcircos.trackPlotRegion行之后出现以下错误。

Error …
Run Code Online (Sandbox Code Playgroud)

geometry visualization r circlize

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

标签 统计

r ×3

data.table ×2

arrays ×1

circlize ×1

geometry ×1

list ×1

perl ×1

r-markdown ×1

visualization ×1