小编dan*_*dan的帖子

在C++中逐行读取二进制文件

我是C++的初学者,所以我希望你能忍受我.

试图读取一个文本格式的文件,每个文件都有这样的行(前几行,称为标题行):

@HD VN:1.5  SO:queryname
Run Code Online (Sandbox Code Playgroud)

或者像这样

read.1  4   *   0   0   *   *   0   0   CAACCNNTACCACAGCCCGANGCATTAACAACTTAANNNCNNNTNNANNNNNNNNNNNNTTGAAAAAAAAAAAAAAAAAA    A<.AA##F..<F)<)FF))<#A<7<F.)FA.FAA.)###.###F##)############)FF)A<..A..7A....<F.A    XC:Z:CAACCNNTACCA   RG:Z:A  XQ:i:2
Run Code Online (Sandbox Code Playgroud)

两者都是制表符分隔.

该文件非常大,因此是二进制格式.我想知道是否可以从每行的二进制格式文件中读取,在该行上进行一些处理,然后将其写入二进制格式输出文件.

我从这段代码开始:

#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main(int argc, char* argv[])
{
  string input_file = argv[1];
  string output_file = argv[2];
  string line;
  ifstream istream;
  istream.open(input_file.c_str(),ios::binary|ios::in);
  ofstream ostream;
  ostream.open(output_file.c_str(),ios::binary|ios::out);
  while(getline(istream,line,'\n')){
    if(line.empty()) continue;
    //process line assuming it is read as a string
    ostream<<line<<endl;
  }
  istream.close();
  ostream.close();
}
Run Code Online (Sandbox Code Playgroud)

但它崩溃了:Segmentation fault (core dumped),当我试图解析部分linestring …

c++ binary getline ifstream ofstream

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

找到弯曲的肘部/膝盖

我有这些数据:

x <- c(6.626,6.6234,6.6206,6.6008,6.5568,6.4953,6.4441,6.2186,6.0942,5.8833,5.702,5.4361,5.0501,4.744,4.1598,3.9318,3.4479,3.3462,3.108,2.8468,2.3365,2.1574,1.899,1.5644,1.3072,1.1579,0.95783,0.82376,0.67734,0.34578,0.27116,0.058285)

y <- c(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32)
Run Code Online (Sandbox Code Playgroud)

看起来像:

plot(x,y)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

我想找到一种方法让肘/膝盖指向周围 x=6.5

我认为拟合loess曲线然后采用二阶导数可能有效但是:

plot(x,predict(loess(y ~ x)),type="l")
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

看起来不会做这个工作.

任何的想法?

r inflection data-mining loess

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

使用data.table将数据框与NAs聚合在一起

我有一个大data.framecharacter列和几个包含NA's的数字列.

以下是一些示例行:

df <- data.frame(id=rep("A",3),v1=c(NA,1,NA),v2=c(2,5,2),v3=c(NA,NA,NA),V4=c(0,0,0),stringsAsFactors=F)
Run Code Online (Sandbox Code Playgroud)

由于df$id重复我想aggregate df通过df$id,并适用sum于所有其它列.

我这样做了:

require(data.table)
setDT(df)[,lapply(.SD, function(x) sum(x,na.rm=T)),by=.(id)]
Run Code Online (Sandbox Code Playgroud)

我得到这个:

   id v1 v2 v3 V4
1:  A  1  9  0  0
Run Code Online (Sandbox Code Playgroud)

所以列v3是所有NA's中df,并因此获得的价值0,这对我的问题,因为在这种情况下,我想保留NA的价值,但在所有其他情况下(其中聚集了数字和的混合NA的,显然我想删除NA'否则总和将是NA).如示例所示(df$v4)我有所有列0,因此我不能简单地用聚合替换所有的0's .NAdata.frame

换句话说,这是我期望的结果:

   id v1 v2 v3 V4
1:  A  1  9  NA 0
Run Code Online (Sandbox Code Playgroud)

知道如何实现这一目标data.table.SD …

aggregate r dataframe na data.table

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

使用scale_colour_gradient自定义ggplot热图中的颜色

我正在尝试heatmap使用ggplot2和绘制皮尔逊成对相关性scale_colour_gradient

这是我的示例数据:

library(dplyr)
library(ggplot2)
set.seed(1)

pairs.mat <- t(combn(1:5,2))
df <- data.frame(sample1=pairs.mat[,1],sample2=pairs.mat[,2]) %>% dplyr::mutate(association=runif(10,0.85,1))
Run Code Online (Sandbox Code Playgroud)

这是ggplot2我正在尝试的代码:

heatmap.ggplot <- ggplot(df,aes(sample1,sample2,fill=association))+geom_tile(color="white")+
  scale_colour_gradient(low="gray",high="red",limit=c(min(df$association),1),space="Lab",guide="colourbar")+theme_minimal()+
  theme(axis.title.x=element_blank(),axis.title.y=element_blank(),axis.text.x=element_text(angle=45,vjust=1,size=12,hjust=1))+coord_fixed()+coord_flip()+labs(colors="Cor")
Run Code Online (Sandbox Code Playgroud)

其产生: 在此输入图像描述

我的问题是:

  1. 我指定了范围low="gray"high="red"但我得到了蓝色范围内的元素。我该如何解决这个问题?
  2. 我似乎无法使用labs(colors="Cor"). 对此有什么想法吗?

谢谢

r heatmap ggplot2

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

用多种颜色为轴刻度文本着色

我正在尝试绘制heatmapusingRplotly包,我希望在其中对 y 轴刻度文本的特定标签具有特定的颜色。

这是一个示例数据集:

set.seed(1)
df <- reshape2::melt(matrix(rnorm(100),10,10,dimnames = list(paste0("G",1:10),paste0("S",1:10))))
Run Code Online (Sandbox Code Playgroud)

这就是我正在尝试的:

library(plotly)
library(dplyr)
plot_ly(z=c(df$value),x=df$Var2,y=df$Var1,colors=grDevices::colorRamp(c("darkblue","gray","darkred")),type="heatmap",colorbar=list(title="Scaled Value",len=0.4)) %>%
  layout(yaxis=list(title=list(color=c(rep("darkred",5),rep("darkblue",5)))))
Run Code Online (Sandbox Code Playgroud)

它不起作用,因为我得到: 在此处输入图片说明

改变: yaxis=list(title=list(color=c(rep("darkred",5),rep("darkblue",5))))

到: yaxis=list(title=list(color=list(c(rep("darkred",5),rep("darkblue",5)))))

或者: yaxis=list(title=list(tickcolor=c(rep("darkred",5),rep("darkblue",5))))

或者: yaxis=list(title=list(tickcolor=list(c(rep("darkred",5),rep("darkblue",5)))))

似乎没有帮助。

任何的想法?

r heatmap axis-labels plotly

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

是否有简单回归的快速估计(仅具有截距和斜率的回归线)?

该问题涉及机器学习特征选择过程.

我有一个很大的特征矩阵 - 列是主题(行)的特征:

set.seed(1)
features.mat <- matrix(rnorm(10*100),ncol=100)
colnames(features.mat) <- paste("F",1:100,sep="")
rownames(features.mat) <- paste("S",1:10,sep="")
Run Code Online (Sandbox Code Playgroud)

S在不同条件(C)下测量每个受试者()的响应,因此看起来像这样:

response.df <-
data.frame(S = c(sapply(1:10, function(x) rep(paste("S", x, sep = ""),100))),
           C = rep(paste("C", 1:100, sep = ""), 10),
           response = rnorm(1000), stringsAsFactors = F)
Run Code Online (Sandbox Code Playgroud)

所以我匹配的主题是response.df:

match.idx <- match(response.df$S, rownames(features.mat))
Run Code Online (Sandbox Code Playgroud)

我正在寻找一种快速计算每个特征和响应的单变量回归的方法.

比这更快的东西?:

fun <- function(f){
  fit <- lm(response.df$response ~ features.mat[match.idx,f])
  beta <- coef(summary(fit))
  data.frame(feature = colnames(features.mat)[f], effect = beta[2,1],
             p.val = beta[2,4], stringsAsFactors = F))
  }

res <- do.call(rbind, lapply(1:ncol(features.mat), …
Run Code Online (Sandbox Code Playgroud)

regression r linear-regression lm

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

在 R Shiny 应用程序中渲染 ggplot2 和绘图对象

我有一个R shiny应用程序使用R和来生成plotlyggplot2显示数字。

因为渲染plotly图形shiny需要plotly函数,所以renderPlotly图形ggplot2会转换为零件plotly中的对象renderPlotly,这会让它们有点混乱。

这是一个例子。首先,生成一些数据:

set.seed(1)

meta.df <- data.frame(cell = c(paste0("c_",1:1000,"_1w"), paste0("c_",1:1000,"_2w"), paste0("c_",1:1000,"_3w")),
                      cluster = c(sample(c("cl1","cl2","cl3"),1000,replace=T)),
                      age = c(rep(1,1000),rep(2,1000),rep(3,1000)),
                      x = rnorm(3000), y = rnorm(3000))

expression.mat <- cbind(matrix(rnorm(20*1000,1,1), nrow=20, ncol=1000, dimnames=list(paste0("g",1:20),meta.df$cell[1:1000])),
                        matrix(rnorm(20*1000,2,1), nrow=20, ncol=1000, dimnames=list(paste0("g",1:20),meta.df$cell[1001:2000])),
                        matrix(rnorm(20*1000,3,1), nrow=20, ncol=1000, dimnames=list(paste0("g",1:20),meta.df$cell[2001:3000])))
Run Code Online (Sandbox Code Playgroud)

这是应用程序代码:

library(shiny)
library(dplyr)
library(ggplot2)
library(ggpmisc)

server <- function(input, output, session)
{
  output$gene <- renderUI({
      selectInput("gene", "Select Gene to Display", choices …
Run Code Online (Sandbox Code Playgroud)

r render ggplot2 shiny plotly

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