AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / coding / 问题

All perguntas(coding)

Martin Hope
Shan Cheung
Asked: 2024-01-02 20:12:39 +0800 CST

Agrupar e contar data em R

  • 9

Tenho um conjunto de dados que descreve o número de dias (BedDays) que cada paciente permanece internado em um hospital:

my_df<-data.frame(RecordID=c("1","2","3","4","5","6","7","8","9","10"),
              StartDate=c("2020-03-02","2020-03-05"
                          ,"2020-03-08","2020-03-11"
                          ,"2020-03-14","2020-03-17"
                          ,"2020-03-20","2020-03-23"
                          ,"2020-03-26","2020-03-29"),
              BedDays=c(12,3,2,11,1,10,18,10,3,6))

E gostaria de contar o número de leitos usados ​​a cada dia. Eu gostaria que meus resultados fossem:

Resultados esperados

Até agora, só consigo pensar no uso de arrays e loops. Use o array para listar as datas em que cada paciente ficou no hospital e, em seguida, use o loop para examinar os arrays e contar os pacientes no hospital em um determinado dia. Esta será a contagem de leitos utilizados em um determinado dia. Isso parece complicado.

Existe alguma função/pacote inteligente que possa fazer essa transformação facilmente?

  • 4 respostas
  • 57 Views
Martin Hope
Morton
Asked: 2024-01-02 17:14:50 +0800 CST

Como adicionar outra cor de posição personalizada ao triângulo css?

  • 9

Como adicionar a barra verde dentro do triângulo como esta foto? insira a descrição da imagem aqui

Tentei adicionar um triângulo css, mas não tenho ideia de como escrever a barra verde no triângulo css.

arquivo css:

.triangle {
    width: 0;
    height: 0;
    border-style: solid;
    border-width: 0 0 210px 100vw;
    border-color: transparent transparent #1a202c;
}

código de disposição:

<div className={styles.triangle} />
css
  • 2 respostas
  • 51 Views
Martin Hope
Osteri
Asked: 2023-12-31 14:12:19 +0800 CST

Capturar o fechamento do FnMut não dura o suficiente

  • 9

Problema

Resumindo: estou tentando implementar um structque contenha um retorno de chamada para um encerramento, que captura o estado de forma mutável. A ideia é que o usuário forneça callback (fechamento) e possa ser informado posteriormente quando um evento específico acontecer.

Eu tenho uma versão funcional de prova de conceito ( exemplo de código #1 ).

Este PoC funciona ( exemplo de código nº 1 ):

fn fun<F>(f: F) -> F
    where
        F: FnMut() -> (),
{
    f
}

fn main() {
    let mut abc = "abc".to_string();
    let mut f = fun(|| {
        abc.push_str(".");
        println!("closure: {:?}", abc);
    });
    f();
    f();
    f();
    println!("end: {:?}", abc);
}

Saída:

closure: "abc."
closure: "abc.."
closure: "abc..."
end: "abc..."

Isso falha ( exemplo de código nº 2 ):

A mesma ideia (um pouco diferente) da anterior, mas tentando conter o encerramento dentro Foo.

struct Foo<'a, T> {
    pub cb: Box<dyn FnMut(&T) + 'a>,
}

impl<'a, T> Foo<'a, T> {
    fn new(f: impl FnMut(&T) + 'a) -> Self {
        Self { cb: Box::new(f) }
    }
    fn on_change(&mut self, f: impl FnMut(&T) + 'a)
    {
        self.cb = Box::new(f);
    }
}

impl<'a, T> Default for Foo<'a, T>
{
    fn default() -> Self {
        Self::new(|_| {})
    }
}

fn main() {
    let mut abc = "abc".to_string();
    let mut f = Foo::default();
    f.on_change(|a| {
        abc.push_str("."); // PROBLEM HERE; uncomment and it works!
        println!("- param: {:?}", a);
    });
    let param = "a".to_string();
    (f.cb)(&param);
    (f.cb)(&param);
    (f.cb)(&param);
    println!("end: {:?}", abc);
}

Resultado esperado:

- param: "a"
- param: "a"
- param: "a"
end: "abc..."

Saída real (erro do compilador):

error[E0502]: cannot borrow `abc` as immutable because it is also borrowed as mutable
  --> src/main.rs:33:27
   |
25 |     f.on_change(|a| {
   |                 --- mutable borrow occurs here
26 |         abc.push_str("."); // PROBLEM HERE; uncomment and it works!
   |         --- first borrow occurs due to use of `abc` in closure
...
33 |     println!("end: {:?}", abc);
   |                           ^^^ immutable borrow occurs here
34 | }
   | - mutable borrow might be used here, when `f` is dropped and runs the destructor for type `Foo<'_, String>`

O erro do compilador é bastante claro e definitivamente tem algo a ver com o tempo de vida. Acho que meu problema é que preciso informar ao compilador sobre o fechamento e a vida útil de seus parâmetros - mas a questão é: como?

Como devo modificar o exemplo de código nº 2 para que o registro de retorno de chamada funcione como no exemplo de código nº 1 ?

REPL:

  • exemplo de código nº 1
  • exemplo de código nº 2
rust
  • 1 respostas
  • 58 Views
Martin Hope
zhang
Asked: 2023-12-23 16:20:40 +0800 CST

Como alterar a cor de fundo do painel com base em rótulos discretos do eixo y no ggplot2 em R?

  • 9

Tenho um dataframe nomeado plot_dfem R com a seguinte estrutura:

# Import the library
library(ggplot2)

# Create a sample data
set.seed(123)
plot_df <- data.frame(gene = rep(paste0("ENSG", 1:10, ".17"), each = 2),
                      mean = rnorm(20, 0.5, 0.1),
                      sd = rnorm(20, 0.02, 0.01),
                      group = rep(c("group_a", "group_b"), 10))

Estou tentando criar um ggplot com pontos e barras de erro, onde o eixo y representa os nomes dos genes (como rótulos discretos), o eixo x representa os valores médios e a cor representa o grupo (ou "group_a" ou " grupo_b"). Aqui está o código que estou usando:

ggplot(plot_df, aes(y=gene)) + 
    geom_point(aes(x=mean, color = group), position = position_dodge(width=0.9)) + 
    geom_errorbar(aes(xmin=mean-sd, xmax=mean+sd, color = group), width=.2,
                 position=position_dodge(.9)) + 
    geom_vline(aes(xintercept=0.5), linetype=2, color = 'gray') + 
    theme_bw() + 
    theme(panel.background = element_blank(),
          panel.grid.major = element_blank(), 
          panel.grid.minor = element_blank())

insira a descrição da imagem aqui

No entanto, quero alterar a cor de fundo do painel com base nos nomes dos genes no eixo y (cada gene tem uma cor diferente ou os genes vizinhos não têm a mesma cor). Como meus rótulos do eixo y são discretos, não sei como conseguir isso. Qualquer ajuda seria apreciada. Obrigado!

Eu tentei:

Altere a cor de fundo entre dia e noite no ggplot2 em R

  • 2 respostas
  • 53 Views
Martin Hope
Kenn
Asked: 2023-12-22 02:06:33 +0800 CST

Divida o dataframe em vários dataframes agrupando colunas

  • 9

Eu tenho um dataframe de dados de expressão onde os genes são linhas e as colunas são amostras. Também tenho um dataframe contendo metadados para cada amostra no dataframe da expressão. Na realidade, meu dataframe expr tem mais de 30.000 linhas e mais de 100 colunas. No entanto, abaixo está um exemplo com dados menores.

expr <- data.frame(sample1 = c(1,2,2,0,0), 
                   sample2 = c(5,2,4,4,0), 
                   sample3 = c(1,2,1,0,1), 
                   sample4 = c(6,5,6,6,7), 
                   sample5 = c(0,0,0,1,1))
rownames(expr) <- paste0("gene",1:5)
meta <- data.frame(sample = paste0("sample",1:5),
                   treatment = c("control","control",
                                 "treatment1", 
                                 "treatment2", "treatment2"))

Quero encontrar a média de cada gene por tratamento. Dos exemplos que vi com split() ou group_by() agrupar pessoas com base em uma coluna já presente no data.frame. No entanto, tenho um dataframe separado (meta) que classifica o agrupamento das colunas em outro dataframe (expr).

Gostaria que minha saída fosse um dataframe com genes como linhas, tratamento como colunas e valores como média.

#        control   treatment1   treatment2
#  gene1  mean        mean         mean
#  gene2  mean        mean         mean
  • 5 respostas
  • 91 Views
Martin Hope
SingerOfTheFall
Asked: 2023-12-21 17:29:25 +0800 CST

Por que esta chamada de função é ambígua, embora a conversão para bool exija uma etapa adicional?

  • 9

Considere o seguinte código:

struct Foo
{
    typedef bool (*fptr_t)(int);

    operator fptr_t() const
    {
        return _func;
    }

    fptr_t _func;
};

class Wrapper
{
public:
    Wrapper(const Foo&) {}
};


void foo(bool b)
{
}

void foo(Wrapper w)
{
}

int main()
{
    Foo f;
    foo(f);
}

Que não compila com um erro de "chamada ambígua para função sobrecarregada". A meu ver, ambas fooas sobrecargas exigiriam uma conversão definida pelo usuário. Porém para a Wrapperversão, a conversão vai

Foo->(user-defined conversion)Wrapper = exact match

enquanto para a boolversão a conversão vai

Foo->(user-defined conversion)fptr_t->(implicit conversion)bool = exact match

o que requer uma etapa adicional. Além disso, cppreference afirma (embora eu não tenha conseguido encontrar o parágrafo exato do padrão)

Se duas sequências de conversão são indistinguíveis porque têm a mesma classificação, as seguintes regras adicionais se aplicam: 1) A conversão que não envolve ponteiro para bool ou ponteiro para membro para bool é melhor do que aquela que envolve.

o que também parece ser o caso aqui. Então, por que essa chamada ainda é ambígua?

c++
  • 1 respostas
  • 62 Views
Martin Hope
AngryHacker
Asked: 2023-12-21 02:48:50 +0800 CST

Qual é o propósito de definir uma coluna calculada como PERSISTED?

  • 9

Minha tabela com a calcIncomecoluna calculada:

CREATE TABLE foo
(
    id int, 
    name varchar(100),
    [other columns], 
    calcIncome AS dbo.fn_calcIncome() PERSISTED NOT NULL
)

Consulta:

select * 
from foo
where calcIncome > 100

Mesmo que eu tenha definido calcIncomecomo PERSISTED, esta consulta ainda fn_calcIncomeexige cada linha.

Então, qual é exatamente o propósito de definir uma coluna calculada PERSISTEDse ela se comporta da mesma forma que colunas calculadas não persistentes?

sql
  • 1 respostas
  • 78 Views
Martin Hope
Someone1611
Asked: 2023-12-20 21:12:12 +0800 CST

Quais são as diferenças entre <unistd.h> e <sys/unistd.h>?

  • 9

Construindo meu projeto no Alpine Linux (use o musl libc) e recebi um erro do compilador: <sys/unistd.h> não encontrado; musl libc não tem um <sys/unistd.h>. Alterei a linha de inclusão para #include <unistd.h> e ela compila com sucesso (ainda há recursos que não funcionam). Estou curioso sobre as diferenças entre <unistd.h> e <sys/unistd.h>, mas não consigo encontrar nenhuma resposta no Google; há uma pergunta do Stack Overflow sobre diferentes unistd.h, mas todas as respostas nem mencionam nada sobre unistd.h

c
  • 2 respostas
  • 77 Views
Martin Hope
Cloft X
Asked: 2023-12-17 02:36:32 +0800 CST

A partir de uma determinada linha, como selecionar as 'n' linhas anteriores em R?

  • 9

Eu tenho uma variável fictícia assim:

df <- data.frame(year = seq(1990, 1997, 1),
                 x = c(1, 0, 0, 0, 1, 1, 0, 0))

year  x
1990  1
1991  0
1992  0
1993  0
1994  1
1995  1
1996  0
1997  0

Quero criar uma yigualdade fictícia 1se o valor de xem qualquer um dos três anos anteriores for diferente de zero. O resultado esperado:

year  x   y
1990  1  NA
1991  0  NA
1992  0   1
1993  0   0
1994  1   1
1995  1   1
1996  0   1
1997  0   1

Como eu faço isso? Uma dplyrsolução é preferida.

  • 3 respostas
  • 80 Views
Martin Hope
Stéphane Laurent
Asked: 2023-12-17 01:21:12 +0800 CST

Conversão de uma árvore de sintaxe abstrata com R

  • 9

Dada uma expressão aritmétrica, por exemplo x + y*z, quero convertê-la para add(x, multiply(y, z)).

Encontrei uma função útil aqui :

> getAST <- function(ee) purrr::map_if(as.list(ee), is.call, getAST)
> getAST(quote(x + y*z)) 
[[1]]
`+`

[[2]]
x

[[3]]
[[3]][[1]]
`*`

[[3]][[2]]
y

[[3]][[3]]
z

Pode-se usar rapply(result, as.character, how = "list")para obter caracteres em vez de símbolos.

Como obter add(x, multiply(y, z))deste AST (o resultado)? Isso se torna mais complicado quando há alguns parênteses:

> getAST(quote((x + y) * z)) 
[[1]]
`*`

[[2]]
[[2]][[1]]
`(`

[[2]][[2]]
[[2]][[2]][[1]]
`+`

[[2]][[2]][[2]]
x

[[2]][[2]][[3]]
y



[[3]]
z

Não exijo a resposta, devo usar a getASTfunção. É apenas um caminho possível a seguir.

É claro que no meu caso de uso real as expressões são mais longas.


Aqui está uma solução (eu acho) para o caso em que não há parênteses:

getAST <- function(ee) purrr::map_if(as.list(ee), is.call, getAST)

ast <- rapply(getAST(quote(x + y*z)), as.character, how = "list")

convertAST <- function(ast) {
  op <- switch(
    ast[[1]],
    "+" = "add",
    "-" = "subtract",
    "*" = "multiply",
    "/" = "divide"
  )
  left <- ast[[2]]
  right <- ast[[3]]
  if(is.character(left) && is.character(right)) {
    return(sprintf("%s(%s, %s)", op, left, right))
  }
  if(is.character(left)) {
    return(sprintf("%s(%s, %s)", op, left, convertAST(right)))
  }
  if(is.character(right)) {
    return(sprintf("%s(%s, %s)", op, convertAST(left), right))
  }
  return(sprintf("%s(%s, %s)", op, convertAST(left), convertAST(right)))
}

convertAST(ast)
  • 2 respostas
  • 46 Views
Prev
Próximo

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Reformatar números, inserindo separadores em posições fixas

    • 6 respostas
  • Marko Smith

    Por que os conceitos do C++20 causam erros de restrição cíclica, enquanto o SFINAE antigo não?

    • 2 respostas
  • Marko Smith

    Problema com extensão desinstalada automaticamente do VScode (tema Material)

    • 2 respostas
  • Marko Smith

    Vue 3: Erro na criação "Identificador esperado, mas encontrado 'import'" [duplicado]

    • 1 respostas
  • Marko Smith

    Qual é o propósito de `enum class` com um tipo subjacente especificado, mas sem enumeradores?

    • 1 respostas
  • Marko Smith

    Como faço para corrigir um erro MODULE_NOT_FOUND para um módulo que não importei manualmente?

    • 6 respostas
  • Marko Smith

    `(expression, lvalue) = rvalue` é uma atribuição válida em C ou C++? Por que alguns compiladores aceitam/rejeitam isso?

    • 3 respostas
  • Marko Smith

    Um programa vazio que não faz nada em C++ precisa de um heap de 204 KB, mas não em C

    • 1 respostas
  • Marko Smith

    PowerBI atualmente quebrado com BigQuery: problema de driver Simba com atualização do Windows

    • 2 respostas
  • Marko Smith

    AdMob: MobileAds.initialize() - "java.lang.Integer não pode ser convertido em java.lang.String" para alguns dispositivos

    • 1 respostas
  • Martin Hope
    Fantastic Mr Fox Somente o tipo copiável não é aceito na implementação std::vector do MSVC 2025-04-23 06:40:49 +0800 CST
  • Martin Hope
    Howard Hinnant Encontre o próximo dia da semana usando o cronógrafo 2025-04-21 08:30:25 +0800 CST
  • Martin Hope
    Fedor O inicializador de membro do construtor pode incluir a inicialização de outro membro? 2025-04-15 01:01:44 +0800 CST
  • Martin Hope
    Petr Filipský Por que os conceitos do C++20 causam erros de restrição cíclica, enquanto o SFINAE antigo não? 2025-03-23 21:39:40 +0800 CST
  • Martin Hope
    Catskul O C++20 mudou para permitir a conversão de `type(&)[N]` de matriz de limites conhecidos para `type(&)[]` de matriz de limites desconhecidos? 2025-03-04 06:57:53 +0800 CST
  • Martin Hope
    Stefan Pochmann Como/por que {2,3,10} e {x,3,10} com x=2 são ordenados de forma diferente? 2025-01-13 23:24:07 +0800 CST
  • Martin Hope
    Chad Feller O ponto e vírgula agora é opcional em condicionais bash com [[ .. ]] na versão 5.2? 2024-10-21 05:50:33 +0800 CST
  • Martin Hope
    Wrench Por que um traço duplo (--) faz com que esta cláusula MariaDB seja avaliada como verdadeira? 2024-05-05 13:37:20 +0800 CST
  • Martin Hope
    Waket Zheng Por que `dict(id=1, **{'id': 2})` às vezes gera `KeyError: 'id'` em vez de um TypeError? 2024-05-04 14:19:19 +0800 CST
  • Martin Hope
    user924 AdMob: MobileAds.initialize() - "java.lang.Integer não pode ser convertido em java.lang.String" para alguns dispositivos 2024-03-20 03:12:31 +0800 CST

Hot tag

python javascript c++ c# java typescript sql reactjs html

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve