Eu tenho dois programas: programa A (em FORTRAN) e programa B (em C). Eles estão conectados através de tubos uns com os outros. O programa B deve ler dados binários diretamente do console do programa A, mas por algum motivo eu não posso fazer isso: A seguir é a parte de leitura do programa B: Nota: VhChildStdOUTRd é um identificador para a saída do programa A. Se eu passar um, dois Ou número inteiro de três dígitos (s) (digamos 1 ou 10 ou 100) o programa funciona e posso obter o número na matriz FileData. Mas para números inteiros mais elevados e todos os números duplos, o FileData dá significado menor valor. Observe que para todos os números meu bSuccess é VERDADEIRO o que significa que ele pode ler o arquivo. Você pode me ajudar a resolver o problema? Obrigado, perguntou 29 de março 13 às 0: 21Bem respeito ao Instituto de Pesquisa Digital e Educação R FAQ Como posso ler dados binários em R O código necessário para ler dados binários em R é relativamente fácil. No entanto, ler os dados corretamente requer que você já esteja familiarizado com seus dados ou possua uma descrição abrangente da estrutura de dados. No arquivo de dados binários, as informações são armazenadas em grupos de dígitos binários. Cada dígito binário é um zero ou um e oito dígitos binários agrupados são um byte. Para ler com sucesso dados binários, você deve saber como partes de informação foram analisadas em binário. Por exemplo, se os seus dados consistem em números inteiros, como os bytes devem interpretar como representativos de um inteiro em seus dados. Ou se seus dados contiverem números positivos e negativos, como você pode distinguir os dois? Quantas informações você espera? Encontre nos dados binários. Idealmente, você conhece as respostas a essas perguntas antes de começar a ler no arquivo binário. Se você não fizer isso, você pode explorar as opções de leitura em R. Para começar, estabelecemos uma conexão com um arquivo e indicamos que estaremos usando a conexão para ler em dados binários. Fazemos isso com o comando do arquivo, fornecendo primeiro o nome do caminho e o quotrbquot para quotreading binaryquot. Para mais detalhes, veja a ajuda (arquivo) em R. Em seguida, usamos o comando readBin para começar. Se achamos que o arquivo contém números inteiros, podemos começar lendo no primeiro inteiro e esperando que o tamanho do inteiro não exija mais especificações. Diferentes plataformas armazenam dados binários de diferentes maneiras e qual fim de uma série de valores binários representa os maiores valores ou valores mais baixos é uma diferença que pode produzir resultados muito diferentes do mesmo conjunto de valores binários. Essa característica é chamada de quotendianquot. Os arquivos binários nos exemplos desta página foram escritos usando um PC, o que sugere que eles são pouco exigentes. Ao ler em dados binários que podem ou não ter sido escritos em uma plataforma diferente, indicando que um endian pode ser crucial. Por exemplo, sem adicionar endian quotlittlequot ao comando abaixo enquanto executa R em um Mac, o comando lê o primeiro inteiro como 16777216. Assim, parece que o primeiro inteiro no arquivo é 1. Como repetidamente usamos os comandos do readBin, nós iremos Trabalhe através do arquivo binário até atingir o final. Podemos ler em vários inteiros ao mesmo tempo, adicionando uma opção n ao nosso comando. Se o n que você especificar é maior do que o número de inteiros que você especificou, readBin irá ler e exibir o quanto estiver disponível, portanto, não há perigo de adivinhar muito grande e n. Como já lemos no primeiro número inteiro, esse comando começará no segundo. Se você sabe ter informações adicionais sobre o que está em seu arquivo, você deve incorporar isso no comando readBin. Por exemplo, se você sabe que deseja ler em números inteiros armazenados em 4 bytes cada, você pode indicar isso com a opção de tamanho: Da mesma forma, se você sabe que seu arquivo contém caracteres, números complexos ou algum outro tipo de informação, você Ajustaria o comando readBin em conformidade, mudando inteiro () para caractere () ou complexo (). Consulte a ajuda (readBin) em R para obter mais detalhes. Uma vez que você provavelmente quer fazer mais do que apenas olhar para o que está contido no arquivo binário, você precisará de algumas estratégias para formatar os dados conforme o lê. Por exemplo, suponha que você tenha um arquivo binário com a seguinte descrição: três Variáveis numéricas coletadas de 200 indivíduos, os três nomes de variáveis aparecem primeiro no arquivo, os valores numéricos são inteiros armazenados em dois bytes cada, e todos os valores para as primeiras variáveis são seguidos por todos os valores para o segundo e depois todos Os valores para o terceiro (como se fossem lidos como colunas, não em linhas). Primeiro, abra uma conexão com os dados. Em seguida, vamos ler nos nomes das variáveis e salvá-las em um vetor em R. Para ler os valores inteiros, podemos optar por ler todos os 300 em um vetor e, em seguida, separá-lo em três variáveis. Ou podemos ler em cada valor de variáveis com um comando readBin separado. Então, podemos combinar nossos três vetores de valores em um quadro de dados com os nomes das variáveis como nossos nomes de colunas. Por último, uma vez que terminamos de ler dados do arquivo binário, podemos fechar a conexão.
No comments:
Post a Comment