CONNOR HARRIS: Still I pense algum vídeo emocionante
produzido por uma empresa de consultoria profissional que usa R muito em seu trabalho.
>> NARRADOR: O que está por trás das estatísticas, as análises e as visualizações
mais brilhantes cientistas de dados que de hoje e líderes empresariais dependem de
para tomar decisões poderosos?
Você não pode sempre vê-lo.
Mas ele está lá.
Chama-se R, open source r-- o linguagem de programação estatística
que especialistas de dados do mundo sobre o uso para tudo
de mapeamento amplo sociais e tendências de marketing on-line
para o desenvolvimento da financeira e clima modelos que ajudam a conduzir nossas economias
e comunidades.
>> Mas o que exatamente é R e onde R começar?
Bem originalmente, R iniciado aqui com dois professores
que queria uma melhor estatística plataforma para seus alunos.
Então, eles criaram um modelado após a linguagem estatística S.
Eles, junto com muitos outros, continuou trabalhando e usando R,
criação de ferramentas para R e encontrar novas aplicações para R cada dia.
>> Graças a esta é esforço da comunidade mundial,
R continuou crescendo com milhares de bibliotecas criadas pelo usuário construídas
para melhorar a funcionalidade e R validação qualidade crowdsourced
e apoio do mais reconhecido líderes da indústria em todos os campos que
usa R. O que é ótimo, porque R é o melhor no que faz.
Brotando especialistas de forma rápida e facilmente interpretar, interagir com,
e visualizar dados mostrando sua rápida crescente comunidade de usuários em todo o mundo R
e ver como open source R continua a moldar
o futuro da estatística análise e ciência dados.
>> CONNOR HARRIS: OK, ótimo.
Assim, a minha própria apresentação vai ser um pouco mais sóbrio.
Não vai envolver tanto assim música de fundo emocionante.
Mas como você viu no vídeo, R é uma espécie de uma linguagem geral do programa finalidade.
Mas ele foi criado principalmente para o trabalho estatístico.
>> Então, ele é projetado para as estatísticas, para análise de dados, para a mineração de dados.
E assim você pode ver isso em um monte de as opções de design que os fabricantes de R
feito.
Ele foi projetado para em grande parte, pessoas que não são
especialistas em programação, que está apenas pegando programação
no lado para que eles possam fazer o seu trabalho em ciências sociais ou nas estatísticas
como queiras.
>> Ele tem um monte de muito diferenças importantes de C.
Mas a sintaxe e os paradigmas que ele usa são praticamente as mesmas.
E você deve se sentir bonita tanto em casa logo de cara.
É uma linguagem imperativa.
>> Não se preocupe muito com isso se você não souber o termo.
Mas há uma distinção entre imperativo, declarativa,
e funcional.
Imperativo significa apenas que você faça declarações que são basicamente os comandos.
E, em seguida, o interpretador ou o computador segue-os um por um.
É fracamente tipado, existem não há declarações de tipo em R.
>> E depois as linhas entre diferentes tipos
são um pouco mais solto do que eles são em C, por exemplo.
E como eu disse há instalações muito extensas
para elaboração de gráficos, para fins estatísticos análise, para mineração de dados.
Estes são ambos construídos no linguagem e, como disse que o vídeo,
milhares de bibliotecas de terceiros que você pode baixar e utilizar gratuitamente
com condições de licenciamento muito soltas.
>> Assim, em geral, eu recomendaria que você olha para esses dois livros
se você estiver indo para trabalhar em R. One deles é o oficial de R iniciante
guia.
É mantida pela desenvolvedores do núcleo de R.
Você pode baixá-lo novamente, livre de cobrar e legalmente naquele link lá.
Todos esses slides estão a ir na internet, no site CS50
após isso é feito.
Então não há necessidade de copiar coisas para baixo freneticamente.
>> A outra é uma livro por Cosma Shalizi,
que é professor de estatísticas a Carnegie Mellon, chamado Advanced Data
Análise de um Ponto de Vista Elementary.
Esta não é principalmente um livro de R.
É um livro de estatísticas e é um livro de análise de dados.
Mas é muito acessível para pessoas que ter um mínimo de conhecimento de estatísticas.
>> Eu nunca ter tomado um curso formal.
Eu só sei pedaços a partir de vários assuntos afins
que eu tenho feito cursos in.
E eu era capaz de entender perfeitamente bem.
>> Todas as figuras são dadas em R. Eles são feitos em I
e eles também têm listas de código abaixo de cada figura que dizer-lhe
como você faz cada figura com código R.
E isso é muito útil se você está tentando emular
alguma figura que você vê em um livro.
>> E faça o download novamente livre stat.cmu.edu/cshalizi/ Desculpe,
que deve ser cortar cshalizi til.
Eu vou ter certeza de que corrigir quando os slides oficiais subir.
/ ADAfaEPoV que é apenas o acrônimo do título do livro.
>> Então geral caveats-- R tem um monte de recursos.
Eu só vou ser capaz de cobrir a superfície de uma série de coisas.
Além disso, a primeira porção do seminário vai ser algo de um despejo de dados.
Estou muito triste com isso.
Basicamente, eu vou apresentá-lo a um monte de coisas
logo de cara, indo o mais rápido possível.
E então nós começamos a a parte divertida, que é
o demo onde eu possa mostrar tudo que nós já conversamos sobre na tela.
E você pode brincar em seu próprio país.
Então lá vai ser um monte de material técnico jogado até aqui.
Não se preocupe em copiar tudo o que para baixo.
Porque A, você pode obter todas as material no site do CS50 mais tarde.
E B, não é realmente tão importante memorizar esta dos slides.
É mais importante que você obtenha alguma facilidade intuitiva com ele
e que vem de apenas brincando.
>> Então, por que usar R?
Basicamente, se você tem um projeto que envolve mineração grandes conjuntos de dados, os dados
visualização, você deve usar R. Se você é
fazendo análises estatísticas complicadas, que seria difícil no Excel,
Por exemplo, seria também ser também boa--
se você está fazendo estatística análise que é automatizado.
Vamos dizer que você está mantendo um website.
E você quiser ler o log do servidor todos os dias e compilar alguns lista,
como os principais países que seus usuários estão vindo,
algumas estatísticas de resumo sobre quanto tempo eles gastam no seu site ou o que quer.
E você deseja executar este a cada dia.
>> Agora, se você está fazendo isso no Excel, você teria que ir para o seu log do servidor,
importar que em um Planilha de dados do Excel,
executar toda a análise manualmente.
Com R, você pode apenas escrever um script.
Agendá-lo para executar todos os dias a partir de seu sistema operacional.
E, em seguida, todas as noites às 02:00, ou sempre que você programá-lo para ser executado,
ele vai olhar através de seu tráfego de internet para esse dia.
E então, no dia seguinte, você vai ter essa brilhante, novo relatório
ou o que quer que com toda a informações que pediu.
>> Então, basicamente, o R é para Cisco programação versus análise de Cisco.
Preliminar é feito.
Vamos entrar em coisas reais.
Portanto, há três reais tipos na linguagem.
Há tipo numérico.
Há uma espécie de uma diferença entre inteiros e pontos flutuantes,
mas não realmente.
Há um personagem tipo, que é strings.
E há uma lógica tipo, que é Booleans.
>> E você pode converter entre os tipos usando estas funções como numérico,
como personagem, como lógico.
Se você chamar, por exemplo, como numérico em uma corda,
ele vai tentar ler essa seqüência como um número, da mesma maneira
que A2i e scanf fazer, e C. Se você chama como numérico em verdadeiro ou falso
ele irá converter para 1 ou 0.
Se você chamar como personagem em qualquer coisa ele vai
convertê-lo em um representação de cadeia.
>> E depois há os vetores e matrizes.
Assim, os vectores são basicamente 1 matrizes dimensionais.
Eles são o que chamamos de matrizes em C. Matrizes, 2 matrizes dimensionais.
E então maior matrizes dimensionais que você pode
têm 3, 4, 5 dimensões ou o que quer de valores numéricos, de cordas,
valores de lógicas.
>> Você também tem listas que são uma espécie de matriz associativa.
Eu vou entrar nisso um pouco.
Então, uma coisa importante que as viagens de pessoas em R
é que não há reais, tipos atômicos puros.
Não há distinção real entre um número, como um valor numérico,
e uma lista de valores numéricos.
Os valores numéricos são realmente o mesmo que os vectores de comprimento 1.
E isto tem um número de implicações importantes.
Um deles, isso significa que você pode fazer coisas muito facilmente que envolvem
como a adição de um número para um vetor.
R será, basicamente, figura o que você quer dizer com isso.
E eu vou chegar a isso em um segundo.
Isso também significa que não há nenhuma maneira para o tipo, na medida em checker--
que algo assim existe em r-- para contar
quando você passou no valor único quando se espera uma matriz ou vice-versa.
E isso pode causar algum estranho problemas que eu tive quando
Eu estava usando R durante o meu trabalho de verão.
E não há matrizes de tipo misto.
Então você não pode ter uma matriz foram o primeiros elementos é, eu não sei,
a cadeia "John" ea segundo elemento é o número 42.
Se você tentar fazer isso, então você vai ter tudo apenas convertido para uma cadeia.
Portanto, temos corda John, corda 42.
>> Sintática tão incomum features-- mais de R sintaxe é muito semelhante a C.
Existem algumas diferenças importantes.
A digitação é muito fraco.
Portanto, não há declarações de variáveis.
Atribuição usa o estranho operador de erro inferior a hífen.
Comentários estão com a marca de hash.
Eu acho que hoje em dia chamamos isso hashtag embora isso não é realmente não accurate--
a barra dupla.
>> Resíduos são modulares com %% sinais.
Divisão inteira é com% /%, o que é muito difícil de ler quando é projetada
up na tela.
Você pode obter intervalos de números inteiros com o cólon.
Assim 2,5 vai lhe dar um vector de todos os números de 2 a 5.
>> Arrays são one-indexados, parafusos que um monte de gente
até se eles estão entre mais linguagens de programação típicos,
como C, onde a maioria as coisas são zero-indexada.
Mais uma vez, este é o lugar onde a herança de R como uma linguagem para como não
programadores profissionais entra.
Se você é um sociólogo ou um economista ou algo
e você está tentando usar R basicamente como adjuvante
ao seu mais importante trabalho profissional,
você vai encontrar one-indexar um pouco mais natural.
Porque você começar a contar a 1 na vida cotidiana, não 0.
>> Para loops, isto é semelhante ao a construção foreach em PHP,
que você vai ter de em-- aprender muito em breve.
Que é para o valor no vetor e em seguida, você pode fazer coisas com valor.
AUDIÊNCIA: Isso é chegar em palestra.
CONNOR HARRIS: Ah, isso é vir para cima conferência, excelente.
AUDIÊNCIA: A atribuição, é deveria apontar de direita para a esquerda?
CONNOR HARRIS: Da direita para a esquerda, sim.
Você pode pensar nisso como o valor em o direito empurrado para a variável
à esquerda.
AUDIÊNCIA: OK.
>> CONNOR HARRIS: E, finalmente, sintaxe da função é um pouco estranho.
Você tem a foo nome da função, atribuída para esta função chave, seguido
por todos os argumentos e, em seguida, o corpo da função após isso.
Novamente, essas coisas podem parece um pouco estranho.
Eles vão se tornar uma segunda natureza depois você trabalha com a linguagem um pouco.
Assim, os vectores, a maneira você construir um vector
é você tipo C, que é uma palavra-chave, em seguida, todos os números desejados ou cordas
como queiras.
Argumentos também ser vetores.
Mas a matriz resultante fica achatada.
Então você não pode ter matrizes onde alguns elementos são números individuais
e alguns elementos são próprias matrizes.
>> Então, se você tentar construir um foram matriz do primeiro elemento é 4
e o segundo elemento é a matriz de 3,5 você
é só pegar uma matriz de três elementos, 4,3,5.
Elas não podem ser de tipo misto.
Se você tentar ler ou escrever fora dos limites de um vetor
você vai ter esse valor chamado NA uma que representa um valor em falta.
E destina-se a esta como estatísticos que
estão trabalhando com conjuntos de dados incompletos.
>> Se você aplicar uma função que deveria para dar apenas um número para uma matriz
então o que você vai ter é, o função irá mapear todo o array.
Então, se a sua função, digamos que leva um número e retorna-lo quadrados.
Você aplicar isso a matriz 2,3,5 O que você vai ter é a matriz 4,9,25.
>> E isso é muito útil porque significa que você
não tem que escrever para loops para fazendo coisas muito simples como aplicar
uma função para todos os membros de um conjunto de dados.
Que se você estiver trabalhando com grande conjuntos de dados, você tem que fazer um monte.
Funções binárias são entrada aplicada pela entrada.
Eu vou entrar nisso.
Você pode acessá-los com matrizes ou vetores com colchetes.
Então suportes nome do vetor quadrados 1 vai lhe dar o primeiro elemento.
Nome do vetor colchetes 2 lhe dará o segundo elemento.
>> Você pode passar um vetor de índices e você vai
voltar para fora, basicamente, um fator de sub.
Assim você pode fazer vetor de nomes de suportes C, 2,4 e você vai sair um vetor contendo
o segundo eo quarto elementos da matriz.
E se você quiser apenas uma rápida estatística resumida
de um vector como interquartile gama, mediana, máximo, seja qual for,
você pode simplesmente digitar resumo nome do vetor e tirar isso.
Isso não é realmente útil em programação, mas se você estiver jogando
em torno dos conjuntos de dados, é útil.
>> Matrices-- basicamente matrizes de dimensões mais elevadas.
Eles têm essa sintaxe especial notação.
Matrix com uma matriz que fica preenchido em-- desculpe, matriz com os dados,
número de linhas, número de colunas.
Quando você tem alguns dados, ele preenche a matriz basicamente vai de cima para baixo
primeiro.
Depois à esquerda para a direita.
Assim, assim.
E R tem construído em multiplicações matriz,
decomposição espectral, diagonalization, um monte de coisas.
Se você quiser maior dimensional matrizes, de modo 3, 4, 5,
ou o que quer dimensões que você pode fazer isso.
A sintaxe é igual a c matriz dim, em seguida, a lista das dimensões.
Então se você quer uma matriz dimensional 4 com dimensões 4, 7, 8, 9, a matriz,
dim é igual a c (4,7,8,9).
>> Você acessar valores individuais com suportes primeira vírgula entrada segunda entrada.
Você pode obter fatias inteiras de linhas ou colunas.
Com esta sintaxe é incompleta apenas remar número vírgula ou coluna vírgula
número.
Assim, as listas são um tipo de matriz associado.
Eles têm a sua própria sintaxe aqui.
Mais uma vez não freneticamente copiar tudo isso para baixo.
Este é apenas para que as pessoas passando os slides mais tarde
ter tudo isso em uma bela referência.
E isso vai se tornar uma vez muito natural Eu realmente andar através dos demos.
Então lista de matrizes basicamente associados.
Você pode acessar os valores com nome da lista, sinal de dólar, chave.
Portanto, se sua lista é nomeada foo, então você pode acessá-lo assim.
Você pode obter um par chave-valor inteiro passando o índice de colchete.
Se você ler a partir de um não-existente chave, você vai ter nulo.
Não será erro.
Coisa é, R vai fazer como muito com nulo, pois ele pode.
E isso pode significar que se você estiver não que esperam para obter nulo fora
de alguma lista de leitura, você vai ter alguns erros imprevisíveis mais abaixo
a linha.
>> Isto aconteceu-me o meu quando trabalho de verão que eu estava usando R
onde eu mudei como um certo lista foi definida em um ponto
mas não se alterou depois da código que ler valores a partir dele.
E então o que aconteceu foi que eu era lendo valores nulos fora desta lista,
passando-os em funções, e ser muito confuso
quando cheguei em todos os tipos de infinidades aleatórios surgindo
nesta função.
Porque se você aplicar determinadas máximo ou funções mínimas para null,
você poderá obter valores infinitos para fora.
>> Os quadros de dados, eles são uma subclasse de lista.
Cada valor é um vetor do mesmo comprimento.
E eles são usados ​​para a apresentação, basicamente, tabelas de dados.
Há essa sintaxe de inicialização.
Isso tudo vai, mais uma vez, ser muito mais claro quando você começa a demo.
E a coisa agradável sobre quadros de dados é que você
pode dar nomes a todas as colunas e nomes para todas as linhas.
E assim que torna o acesso -los um pouco mais voltado.
Também é assim que a maioria das funções que ler dados de planilhas do Excel
ou a partir de arquivos de texto, por exemplo, vai ler em seus dados.
Eles vão colocá-lo em algum tipo de estrutura de dados.
Assim, as funções no funções sintaxe é um pouco estranho.
Novamente, é o nome da função, atribuir, esta função palavra-chave e, em seguida,
a lista de argumentos.
Portanto, há algumas coisas agradáveis sobre como funciona a trabalhar aqui.
Por um lado, você pode realmente atribuir valores padrão para certos argumentos.
Então você pode dizer R1 equals-- você pode dizer foo
é uma função onde R1 é igual a algo por padrão, se o usuário especifica
não há argumentos.
Caso contrário, é tudo o que ele colocou.
E isso é muito útil porque muitas das nossas funções
têm muitas vezes dezenas ou centenas de argumentos.
Por exemplo os de conspirar gráficos ou gráficos de dispersão de plotagem
ter argumentos que controlam tudo a partir do título e do eixo
etiquetas para a cor das linhas de regressão.
E por isso, se você não quer para fazer as pessoas especificar
cada um destes centenas de argumentos
controlar cada aspecto da um terreno ou uma regressão ou o que quer,
é bom ter esses valores padrão.
>> E então você pode realmente escrever como você viu aqui.
Ou encontrar um melhor exemplo.
Quando você chamar funções que você pode realmente chamá-los usando os nomes de argumentos.
Então aqui está um exemplo de o construtor matriz.
Demora três argumentos.
Normalmente você tem dados, que é um vector.
Você tem N linha, que é o número de linhas.
Você tem N cols-- número de colunas.
A coisa é se você digitar N é igual a linha que quer
e N é igual a qualquer que seja quando col você está chamando essa função,
você pode realmente reverter-los.
Então você pode colocar N col primeira fileira e N segunda e vai fazer nenhuma diferença.
Então essa é uma característica pouco agradável.
>> Fez importação e exportação.
Isto pode ser feito, basicamente.
Há também instalações para escrever para fora arbitrária R objetos em um arquivo binário
e, em seguida, lê-los de volta mais tarde.
Que é útil se você está fazendo uma grande sessão de R interativo
e você precisa para salvar coisas muito rapidamente.
Por padrão R tem um diretório de trabalho que os arquivos são escritos para fora
e ler de volta a partir.
Você pode ver que com getwg, alterá-lo com setdw.
Nada especialmente interessante aqui
>> Então, agora as estatísticas reais stuff-- regressão multilinear.
Assim, a sintaxe usual é um pouco complicado.
O modelo é um grande objeto basicamente.
Ele é atribuído a lm, que é uma chamada de função.
O primeiro elemento, a y- x1 til mais o que.
Meu sintaxe aqui é um pouco confuso.
Estou muito triste, isso é a maneira padrão
que os livros de ciência da computação fazer isso.
Mas é um pouco estranho.
>> Então, basicamente, é lm parênteses, primeiro item
é variable-- desculpe, dependente x1 til variável mais x2 mais
porém muitos independente variáveis ​​que você tem.
E, em seguida, estes podem ser tanto vectores, todos o mesmo comprimento.
Ou podem ser coluna cabeçalhos em um quadro de dados
que você acabou de especificar no segundo quadro dados argumento.
>> Você também pode especificar uma fórmula mais complexa
assim você não tem que linearmente regredir uma variável dependente um,
ou um vector num vector preexistente.
Você pode fazer, por exemplo, um componente vector y ao quadrado mais 1
e regredir que contra o log de algum outro vector.
Você pode imprimir os resumos da modelo com este comando chamada
summary-- apenas resumo parens modelo.
Novamente outra coisa que eu deveria esclarecer.
Outra coisa que vai se corrigido quando os slides subir na internet.
Se você quiser apenas para calcular uma correlação simples
você pode usar vector correlação 1 vector 2 função central.
Método é, por padrão Correlações de Pearson.
Esses são os padrões que você pode fazer.
Há também Spearman e Correlações Kendell
que são alguns variedade de correlação ordem de classificação.
Bem, eles não calculam produto momentos entre os próprios vectores,
mas de ordens de classificação do vetor.
Eu vou explicar isso mais tarde.
>> AUDIÊNCIA: Pergunta rápida
>> CONNER HARRIS: Claro.
>> AUDIÊNCIA: Então, quando você está calculando para as correlações simples fazer
você assumir que há uma estatística significância para a correlação?
CONNER HARRIS: Você não tem que.
Um filme é basicamente apenas uma máquina.
Levará em duas coisas e ele vai cuspir
coeficientes para a melhor linha de ajuste.
Ele também relata padrão erros nesses coeficientes.
E ele vai dizer, como é o intercepção estatisticamente significativa
ou a diferença entre 0.
É a inclinação da melhor fit linha estatisticamente
diferente de zero, et cetera.
Por isso, assume nada, eu acho é melhor resposta para sua pergunta.
ESTÁ BEM.
>> Plotting-- assim a razão principal que deveria usar R, como regressão múltipla.
Basicamente todas as línguas tem alguma facilidade para que.
E honestamente sintaxe de R para regressão é um pouco misterioso.
Mas plotagem é o lugar onde ele realmente brilha.
>> A função é laborioso enredo e leva dois vetores, xe y.
E, em seguida, as elipses representa um muito grande número de argumentos opcionais que
controlar tudo a partir de títulos de cores de várias linhas ou vários pontos,
para o tipo de trama.
Você pode ter de dispersão parcelas ou lotes de linha.
>> [Inaudível] 2 vetores do mesmo comprimento.
Você pode preceder esta com anexar quadro de dados em seu script.
E isso permitirá que você acabou de usar coluna cabeçalhos em vez de vectores separados.
Você pode adicionar melhores linhas de ajuste e locais curvas de regressão para o seu gráfico.
>> Estes comandos listada aqui, linha e linhas ab,
Por padrão estes chegar escrito em janelas pop-up
porque ele assume que você está usando R interativamente.
Se você não é possível escrever dois arquivos que
realmente estão em qualquer formato que você gostaria.
Desculpe, eu tenho um erro de digitação Eu só percebi.
Se você deseja abrir outro dispositivo gráfico
você pode usar esta função chamada ou PNG JPEG ou um monte de outros formatos de imagem.
E você pode escrever gráficos para qualquer nome de arquivo que você especificar.
Para cancelar que você tem que use-- Eu não escrevi isso no slide--
mas há uma função chamada dev dot off que leva sem argumentos.
>> Depois, há instalações para plotagem 3D
e para contorno traçando se você quiser fazer
gráficos de duas variáveis ​​independentes.
Eu não vou entrar nesses agora.
>> Há também alguns são instalações para animação
aqueles são geralmente mantidos por terceiros.
Tenho feito animações com gráficos de P, mas eu não usei esses terceiros
bibliotecas.
Então, eu realmente não posso atestar de como eles são bons.
O que eu recomendo se você quiser para fazer animações usando R
é que você pode escrever para fora todos os quadros para as animações
e então você pode usar um program-- terceiro partido
os típicos são chamados FFmpeg ou ImageMagick-- para costurar
todos os seus quadros em uma animação.
>> Assim, o tempo para demonstração.
Então, se você estiver usando qualquer Unix como sistema que é Linux BSD mas quem usa BSD.
OS X abrir uma janela de terminal e digite R no prompt de comando.
Se você tem R estúdio ou semelhantes, que também funciona.
Para usuários do Windows, você deve ser capaz de encontrar R em seu menu Iniciar.
Ele deve ser chamado algo como R x64 3 pontos que seja.
Abra que lá em cima.
>> Então, agora deixe-me apenas abra uma janela de terminal.
Tudo bem, pesquisa.
AUDIÊNCIA:-Space Command
CONNER HARRIS: Command-Espaço, obrigado.
Eu normalmente não usam Macs.
Terminal, mostrar nova janela.
New window é definições básico, R. Portanto, você deve obter
uma mensagem de boas vindas, algo como isto.
>> Então, eu estou usando R interativamente.
Você também pode escrever roteiros de R curso.
Basicamente scripts são executados exatamente da mesma maneira como
se você estivesse sentado em frente ao computador digitando cada linha de uma de cada vez.
Então, vamos começar por fazer um vetor.
Uma seta C 1, 2.
1, 2, 4.
OK, claro.
Eu posso fazer o tamanho da fonte maior.
>> AUDIÊNCIA: Command-Plus
>> CONNER HARRIS: Command-Plus.
Command-Plus.
Tudo bem, que tal?
Boa?
ESTÁ BEM.
Então, vamos começar por declarando uma lista vetor.
Fazer, uma seta, C 1,2,4.
Podemos ver a.
Não se preocupe com o suporte de lá.
Os suportes são por isso, se você imprimir matrizes muito longas, podemos onde você está.
Um exemplo seria se eu só quero intervalo 2-200.
Se eu impresso muito longo matriz, os suportes
são apenas para que eu possa manter o controle de qual índice
em que estamos Se eu estou procurando através deste visualmente.
Então, de qualquer forma, temos um.
>> Então eu disse antes que as matrizes de interação muito bem com, por exemplo,
operações unários como este.
Então, o que você acha que eu vou obter se eu digitar um plus 1?
Sim.
Certo, agora eu vou fazer essa matriz diferente.
Digamos b c 20,40, 80.
Então, o que você acha este comando irá fazer?
Adicionar os elementos.
E então basicamente é isso que ele faz.
Então isso é muito conveniente.
Então, eu como sobre eu faço isso. c é, digamos, 6 vezes 1-10.
Então o que eu quero ver contido, que você acha?
Assim, todos múltiplos de seis.
Agora, o que você acha que acontecerá se eu faço isso?
Eu vou fazer isso um pouco mais clara, c, c.
Então o que acontece, você acho que, se eu faço isso?
uma vantagem C.
[INAUDÍVEL]
>> AUDIÊNCIA: Qualquer um erro ou que apenas adiciona os primeiros três elementos.
>> CONNER HARRIS: Não é bem assim.
Isto é o que temos.
O que acontece é um mais curto array, um, tem um ciclo.
Então, nós temos 124, 124, 124.
Sim.
E, basicamente, você pode visualizar este comportamento antes, um plus 1,
como uma subclasse desta comportamento, onde a matriz mais curta é apenas o número
1, que é uma matriz de um elemento.
Eu só estar dizendo vector tudo o tempo, em vez da matriz,
porque é isso que a r documentação normalmente faz.
É um hábito arraigado c.
>> OK, e então agora temos essa matriz.
Portanto, temos essa matriz, c.
Podemos obter resumo estatísticas sobre c, resumo c.
E isso é bom.
Então agora vamos fazer algumas coisas da matriz.
Vamos dizer que é uma matriz m.
Vamos torná-lo um três por três um.
Assim nRows é igual a 3, e ncols é igual a 3.
E para os dados vamos fazer-- então o que você acha que isso vai fazer?
>> Certo, é o próximo.
É nrow e nColumn.
Então o que eu fiz é que eu tenho declarou uma matriz três por três
e eu passei em uma matriz de nove elementos.
Assim, o logaritmo de todo o elementos de um a nove.
E todos esses valores preencher o array-- arrependido?
AUDIÊNCIA: Essas são base 10 registros?
CONNER HARRIS: Não, é log logaritmos naturais, de modo base e.
Sim, se você queria de base 10 log, eu acho que você tem
para registrar o que quer, dividido por log 10.
E assim os dados do [inaudível] apenas enche-se a matriz, de modo de cima para baixo,
depois à esquerda para a direita.
E se você queria fazer alguma outra array, digamos que n é a matriz.
Vamos fazer, eu não sei, 2-13.
Ou eu vou fazer algo mais interessante.
Eu vou fazer 2-4.
nrow é igual a, digamos, três.
Ncol é igual a 4.
n.
Então, nós temos isso.
>> E agora, se queremos multiplicar estes, faríamos vezes n cento por cento,
porque é isso n.
E nós temos produtos de matriz.
Por que maneira, você viu como quando eu declarei n, a 2-4
vector foi pedalando até que encheu todos n?
Se você queria tomar decomposição de valores próprios,
isso é algo que podemos fazer muito facilmente.
Podemos fazer eigen n.
E assim, este é o nosso primeiro deparar com uma lista.
>> Então eigen n é uma lista com duas chaves.
Valores, o que é essa matriz aqui.
E vectores, que é essa matriz aqui.
Então, se você queria extrair, digamos, esta terceira coluna
a partir da matriz de vectores próprios, porque os vectores próprios são vetores coluna.
Então o que podemos fazer eigen vec sinal n dólar vetores, vírgula 3, do [inaudível].
Vec.
É que, como você poderia esperar.
>> Então diga n vezes vezes por cento VEC.
Assim, o resultado aqui certamente parece se tomássemos o terceiro valor próprio aqui,
que corresponde o terceiro vector próprio.
Ele só multiplicado tudo este eigenvector,-componente sábio,
pelo valor próprio.
E isso é o que seria de esperar, porque é isso que são valores próprios.
Tem alguém aqui não tomado álgebra linear?
Um casal de pessoas, OK.
Basta ligar o seu cérebro fora por um tempo.
E, de fato, se tomarmos eigen n valores sinal de dólar 3 vezes VEC,
bem obter a mesma coisa.
É formatado de forma diferente como uma linha vector, em vez de um vector de coluna,
mas é grande coisa.
E assim esses são basicamente o bom coisas que podemos fazer com matrizes,
listas demonstrados.
I deve demonstrar o bom coisas sobre funções também.
>> Então, vamos dizer-- [inaudível] função, chamada de let
que func contra função n n ao quadrado na verdade, isso não é realmente o melhor.
a, b, um quadrado mais b.
Então, uma coisa sobre funções, de novo, é que eles
não precisa de instruções de retorno explícitos.
Assim, você pode só-- o última declaração avaliado
será devolvido a declaração, ou o valor devolvido.
Portanto, neste caso, estamos avaliando única uma declaração, um quadrado mais b.
Esse será o valor de retorno padrão.
Não custa nada para colocar em devolver valores explicitamente,
especialmente se você está lidando com um função da lógica muito complicado
fluxo.
Mas você não precisa deles.
Então, agora nós podemos fazer func 5, 1, e isso é basicamente o que você esperaria.
Outra coisa que podemos fazer, nós podemos realmente fazer func b
é igual a 1, a é igual a 5.
Então, se nós especificar qual o número aqui, que argumento ao qual argumento
na função, podemos virar em torno esses valores onde quisermos.
>> AUDIÊNCIA: Existe uma razão para escrevê-lo para fora com o b
é igual ao invés de apenas usar os números e a vírgula?
CONNER HARRIS: Sim, normalmente fazer isso se você tiver funções
com um monte de argumentos.
Isso pode muitas vezes ser como bandeiras que você só
deseja usar no raras ocasiões.
E desta forma você pode only-- você pode referir-se aos argumentos específicos
que você deseja usar valores não-padrão para,
e você não tem que escrever um bando de bandeiras é igual a false depois deles.
Ou eu posso escrever isso de novo com um valor padrão como b é igual a 2.
E então eu poderia fazer f func, Eu vou fazer 4, 1 neste momento.
E 17, que é 4 quadrado mais 1, como se poderia esperar.
>> Mas eu também poderia apenas chamar esta com func 4,
e eu vou ficar 18, porque Eu não especificar b.
Então b recebe o valor padrão de 2.
>> OK, então agora se você estiver a seguir, juntamente com o demo,
digite esta linha no seu comando solicitar e ver o que surge.
Na verdade, não faça isso.
Escreva isso.
Você deve obter algo como isto.
Então mtcars é um construído em dados definir para esta demonstração
fins que vem com-- que vem por padrão com a sua distribuição r.
Esta é uma compilação das estatísticas de uma edição da revista Motor Trend 1974
sobre uma série de diferentes modelos de carros.
>> Portanto, há milhas por galão, cylinders-- Eu esqueço o que disp é-- cavalos de potência.
Provavelmente.
Se você acabou de carros Google MT, em seguida, um dos primeiros resultados
será a partir da documentação oficial r
e vai explicar todos esses campos de dados.
Portanto, o peso é-- peso é peso do carro em toneladas.
Q sec é o tempo de quarto de milha.
Então, agora nós podemos fazer algumas coisas divertidas sobre carros MT é um campo de dados.
>> Assim, podemos fazer coisas como nomes de linha, carros mt.
E esta é uma lista de todas as linhas em o conjunto de dados que são nomes de carros.
Podemos fazer COLNAMES, carros mt esta.
Se você fizer carros MT, índice de sub-numérica, como 2.
ficamos com a segunda coluna de este, que seria cilindros.
>> AUDIÊNCIA: O que você fez?
>> CONNER HARRIS: Eu digitei mt carros, suportes e,
o que me deu o segundo coluna de carros mt.
Ou, se quisermos uma linha, eu posso digitar mtcars vírgula 2, por exemplo.
Outro round 2 vírgula, assim.
E isso vale em sua linha.
Este aqui só dá-lhe uma coluna, mas como um vector de coluna.
Eu só percebi agora eu esqueceu-se de demonstrar
algumas coisas legais sobre vetores que você pode fazer com índices.
Então deixe-me fazer isso agora.
Então vamos fazer c colocando gets-- isso em pause-- 2 vezes 1 a 10.
Assim, c é apenas vai ser o vetor de 2 a 20.
Eu posso tomar elementos como este, c2.
I pode passar em um vetor assim, C-- me deixar
usar o nome diferente do que c, como vec c.
Basicamente, eu estou fazendo isso para que você não fique
confundido como um C entre função da construção do vector,
e, em seguida, c como um nome de variável.
Suportes Vec C 4, 5, 7.
Isso vai me tirar do quarto, quinto, e sete elementos da matriz.
Eu posso fazer VEC, colocar em um negativo índice, como negativa 4.
Isso vai me tirar isso com o quarto elemento removido.
Então, se eu queria fazer fatias, Eu posso fazer vec 2 a 6.
2 cólon 6 é apenas mais um vector, que é 2, 3, 4, 5, 6.
Cospe isso.
>> Então, de qualquer forma, de volta aos carros mt.
Então vamos fazer algumas regressões.
Digamos modelo gets-- vamos linearmente regress-- Eu não sei.
Primeiro vamos fazer anexar mtcars, é claro.
Então, [inaudível] modelo lm, vamos regredir milhas por galão sobre o peso til.
E então quadro de dados é mtcars.
Então modelo de resumo.
>> OK, então isso parece um pouco complicado.
Mas, basicamente, vendo como se nós tentar expressar milhas por galão
como uma função linear de peso, então temos esta linha aqui,
que intercepta a 37,28.
37.28 seriam as milhas teóricas por galão de um carro que pesa zero.
E, em seguida, para cada tonelada adicional, você bater cerca de cinco milhas por galão
fora disso.
Ambos estes coeficientes você pode ver, há erros padrão.
E eles são muito estatisticamente significativa.
>> Assim, podemos estar muito certo de 1 e 10 a 10 para negativo.
Assim 1 vezes algo para o negativo 10, que se você fizer um carro mais pesado,
ele terá piores milhas por galão.
Ou podemos testar algum outro modelo.
Como em vez de regredindo isso em peso,
vamos regredir-lo no log de peso, porque talvez o peso eficaz
na milhagem não é de alguma forma linear.
>> Isso nos deu uma r ao quadrado de 0,7528.
Então, vamos tentar isso.
Desta vez vamos fazer um variável diferente, também.
Model2.
Assim resumo, model2.
Tudo bem, então, novamente, temos a nossa melhor linha de ajuste aqui.
E este tempo-- este está dizendo: basicamente, que cada vez que você
aumentar o peso de um carro por um factor de e
você perde isso muitas milhas por galão.
>> E por isso desta vez o nosso padrão residual erro ele-- que não importa, realmente.
O erro padrão residual é basicamente, apenas o erro padrão
que você deixou após você tomar a linha de tendência de distância.
E o nosso r ao quadrado aqui é de 0,81, que é um pouco melhor do que o
que tínhamos antes, 0,52.
>> E agora vamos adicionar um termo a esta regressão.
Então, vamos regredir milhas por galão tanto no registo dos pesos
e, vamos fazer, q milhas, tempo de quarto de milha.
OK, ele deve ter as-- tudo bem, qsec.
Qsec.
Actually-- desculpe, o quê?
Deixe-me chamar esse algo mais além model2.
Deixe-me chamar esse model3.
E então agora nós podemos fazer resumo model3.
E então, novamente, este é basicamente o que você poderia esperar.
Você tem interceptar positivo.
O efetivo aumento peso é negativo.
E a eficaz aumentando o tempo de quarto de milha
é positivo, mas embora menos do que o peso.
Agora intuitivamente, você pode fazer o sentido de isso dizendo pensar em carros esportivos.
Há uma aceleração muito rápida, Um muito curta vezes quarto de milha.
Eles também estão indo para usar mais gás, Considerando carros mais sensíveis vão
ter aceleração mais lenta, quarto de milha vezes mais elevados,
e usam menos gás ,, assim milhas por galão mais elevados.
Ótimo.
E então agora é hora de tramar algo como isto.
Então, vamos fazer-- tão nua ossos que podemos fazer plots--
porque eu tenho ligado este quadro de dados antes-- podemos apenas fazer parcelas, mpg em peso.
Faça deste um pouco maior.
Lá, temos basicamente uma gráfico de dispersão, mas os pontos
são meio difícil de ver sobre este assunto.
>> Eu não me lembro o que o improviso sintaxe é para mudar o enredo.
Então eu acho que isso vai ser um bom momento para trazer,
há uma muito agradável ajuda builtin recurso, citações de ajuda funcionar nome.
Nós vamos trazer-se, basicamente, qualquer coisa que você gostaria.
Eu acho que eu realmente vou fazer isso Tipo de igual para p pontos parcelas.
Será que isso muda alguma coisa?
E não, não realmente.
Tudo certo.
>> Por alguma razão, quando eu fiz isso em meu próprio computador há um tempo atrás,
Todos os pontos de dispersão eram muito mais clara.
De qualquer forma, são o tipo de dispersão de visível?
Não há ninguém lá.
Alguns lá, alguns lá.
Você pode classificar de vê-los, certo?
Portanto, se queremos adicionar uma linha de melhor ajustamento para este lote aqui, o que é um pouco nua
bones-- deixe-me fazer-lhe um pouco mais agradável.
Principal igual contra peso.
Milhas por galão.
Mais uma vez, você pode ver o quão útil argumentos opcionais estão aqui também
não ter que colocar as coisas em um certa ordem com argumentos de teclado
quando você tem parcelas, pois estes tomam um monte de argumentos.
>> Xlab igual peso, peso, toneladas.
Tudo certo.
OK, sim, este dispositivo está sendo um pouco chato.
Mas você pode ver tipo de lá em cima, há um título do gráfico do lado.
Por aqui there's-- na parte inferior aqui existem rótulos de eixo.
Eu não me lembro de improviso o que os comandos ars--
que as funções são para aumentar o tamanho desses rótulos e títulos,
mas eles estão lá.
>> E assim, se quisermos adicione a melhor linha de ajuste,
nós poderíamos fazer algo como-- I tem a sintaxe escrito aqui em cima.
Então lembre-se que acabamos de adicionar modelo foi mpg, peso, mtcars.
E assim se eu queria adicionar um melhor ajuste linha, eu poderia fazer, um modelo b line.
E o crescimento, temos uma linha de melhor ajustamento.
É meio difícil de ver novamente.
Estou muito triste sobre o dificuldades tecnológicas.
Mas ele é executado basicamente canto superior esquerdo para canto inferior direito.
>> E se a escala foram maior, você poderia ver
que a interceptação é o que você pode encontrar a partir das estatísticas de resumo
se você digitar modelo de resumo.
OK, então eu espero que todo mundo fica algo de uma sensação de que
R é, o que é bom para.
Você poderia fazer muito melhor do que parcelas isso em seu próprio tempo, se você gosta.
>> Assim, a interface de função externa.
Isto é algo que não é tipicamente coberto de palestras introdutórias
ou qualquer coisa introdutório para r.
Não é provável que você vai precisar dele.
No entanto, eu achei que seria útil em meus próprios projetos no passado.
E não há nenhuma boa tutorial para ele on-line.
Então, eu estou indo só para apressá-lo durante todo este
e então você está livre para sair.
E assim o estrangeiro interface de função que está
você pode usar para chamar a ver funções com um R. Internamente,
R é construído sobre aritmética de C. R é apenas 64-bit aritmética de ponto flutuante de C,
que é do tipo double [inaudível].
E você pode querer fazer isso por um monte de razões.
Por um lado, R é interpretado, é não compilado para baixo para código de máquina.
Assim, você pode reescrever o seu presilhas internas em C e em seguida, obter
a vantagem de utilizar como R. é um pouco mais conveniente do que C.
Tem a melhor gráfica instalações e outros enfeites.
E enquanto ainda está sendo capaz de obter velocidade máxima fora das presilhas internas,
que é onde você realmente precisa dele.
>> Reutilizar bibliotecas C existentes, que também é importante.
Se você tiver alguma biblioteca C para como, Eu não sei, transformadas de Fourier,
ou algum muito Arqueano procedimento estatístico utilizado
em alta astrofísica energia ou algo assim, eu não sei.
Alta energia astrofísica não é nem mesmo um pensamento, eu acho.
Mas você pode fazer isso em vez de ter para escrever um porta R nativa deles.
E no as-- e outra vez, como se você olhar na maioria das bibliotecas padrão do R,
sobre os internos, os internos são vai usar a função externa
interface muito extensivamente.
Eles têm coisas como Fourier transforma computação ou correlação
coeficientes escrito em C, e eles só tem R wrappers em torno deles.
A interface é um pouco difícil. eu acho
sua dificuldade é exagerada em um Muitas das instruções que você vai encontrar.
Mas, no entanto, é um pouco confuso.
E eu não tenho sido capaz de encontrar um bom tutorial para ele,
Então é isso agora.
Mais uma vez, este segmento inteiro é mais para referência futura.
Não se preocupe com cópia tudo para baixo no momento.
Assim, as seguintes instruções são para sistemas Unix-like,
Linux, BSD, OS X. Eu não sei como isso funciona no Windows,
mas por favor, não faça o seu projeto final no Windows.
Você realmente não quer.
Unix é muito melhor conjunto para programação casual.
Então, basicamente estrangeira interface de função.
Se você quer escrever um C função para uso com R,
ele tem que tomar todo o argumentos como ponteiros.
>> Assim, para valores individuais, esta significa que está apontado para o valor.
Para matrizes, isto é um apontador ao primeiro elemento, que
é o que realmente significam nomes de arrays.
Novamente, isso é algo que você deve ter pretty totalmente para baixo depois de p definir cinco.
Nomes de arrays são apenas apontadores ao primeiro elemento,
O tipo de ponto flutuante é o dobro.
E sua função deve retornar void.
A única maneira que ele pode realmente dizer o que aconteceu R
é por modificação da memória que R deram a ele através da função externa
interface.
>> Então eu escrevi este exemplo aqui, este é
uma função que calcula uso produto escalar de dois vetores.
Ela recebe dois argumentos, vec1, vec2, que são os próprios vectores,
e, em seguida, n, que é um comprimento, porque mais uma vez,
R foi construído em [inaudível] para descobrir o comprimento de vectores, mas não faz C.
Em C, vetores é uma arbitrária delimitado pedaço de memória.
Assim, a maneira que você puder calcular produtos de ponto
é apenas definir este parâmetro para fora a zero e então percorrer
a partir de 1 para estrelar n, porque n é um ponteiro para o comprimento,
basta adicionar algo a isso parâmetro.
E isso pode ser uma boa prática se você estiver indo para fazer
esta a escrever duas funções C separados.
Um deles has-- um deles apenas leva os argumentos e os tipos
que seria, normalmente, em C.
>> Então Leva uma matriz argumentos como ponteiros.
Mas os argumentos de valor único como n, ele só tem como valores por cópia,
sem ponteiros.
E então isso não acontecer Ponteiro [inaudível] fora.
E então você pode ter uma pessoa diferente, basicamente,
função wrapper que, basicamente, lida com os requisitos
da função externa interface para você.
>> A maneira como você chamar isso de R é, uma vez você tem a sua função escrita em C,
você digita R shlib cmd, R comando biblioteca compartilhada,
foo ponto c, ou o que quer o nome do arquivo é,
eo sistema operacional não desembolsar no terminal R.
E isso vai criar uma biblioteca chamada foo dot-lo.
E então você pode carregá-lo em nosso script ou interativamente
com comando de carregamento dyn ponto.
Depois, há uma função em R chamado ponto c.
>> Isso leva argumentos que são primeiro o nome da função em C
que você deseja chamar.
E então todos os parâmetros à função que desempenha,
eles têm de ser na ordem adequada.
Você tem que usar este tipo funções de coerção como um número inteiro, como
casal, como personagem, e como lógica.
E então, quando ele retorna o lista, que novamente é apenas
uma matriz associada do nomes de parâmetros e os valores
após a função foi executado.
>> Portanto, neste caso, porque tem prod dot argumentos vec1, vec2, e int n, n out.
Para dot c temos prod ponto, o nome da função
estamos chamando, vec1, vec2, tipo coerce.
O comprimento de qualquer vector, Eu só escolhi vec1 arbitrariamente.
Seria mais robusta quer dizer s comprimento inteiro de vec1 min, comprimento vec2.
Então, assim como duplo zero, porque nós realmente não
importo com o que vai para o out parâmetro porque somos
definindo-a zero de qualquer maneira.
>> E então os resultados vão ser uma grande variedade de associado, basicamente,
vec1 é o que quer, vec2 é o que quer.
Mas estamos interessados ​​em para fora, para que possamos tirar isso.
Esta é mais uma vez, um exemplo muito brinquedo de uma função de interface externa.
Mas se você tem que computar dot produtos de vectores maciças em loops,
ou se você tem que fazer outra coisa em um loop,
e você não quer contar com R, que tem um pouco de sobrecarga
embutido, isto pode ser útil.
>> Novamente, isto não é geralmente um tema introdutório para R.
Não é muito bem documentado.
Eu só estou incluindo-o porque Eu achei que seria útil no passado.
Práticas Então, ruins.
Eu mencionei que há uma loop for na função.
Geralmente você não deve, em a língua, não usá-lo.
Com base em como R implementa iteração internamente, o mesmo pode ser lento.
Eles só olhar feio também.
>> R lida com vectores muito bem, por isso, muitas vezes você não precisa usá-lo.
Depois, você pode normalmente substituir um vector frequentemente
com estas funções chamadas de alta funções de ordem, Mapa, Reduzir,
Localizar, ou filtro.
Vou apenas dar alguns exemplos do que estes fazem.
Mapa é uma função de ordem superior porque é preciso uma função como um argumento.
Assim, você pode dar-lhe uma função, você pode dar-lhe uma matriz,
e ele vai aplicar a função para cada elemento da matriz
e retornar a nova matriz.
Reduzir, basicamente você dá um array, você dá a ele
uma função que leva dois argumentos.
Será aplicável a função em primeiro lugar, a primeiro argumento com algum valor inicial.
Em seguida a esse resultado no segundo.
Em seguida a esse resultado no terceiro, em seguida, para esse resultado na quarta.
E, em seguida, retornar quando se chega ao final.
Assim, por exemplo, se você quiser calcular a soma de todos os elementos
em uma matriz, do que se pode chamar de reduzir com [inaudível] reduzir um complemento
função, como func a, b, voltar a mais b.
E, em seguida, iniciar um valor de 0.
>> E tudo isso, você pode encontrá-los descrito na documentação R,
em qualquer livro sobre programação funcional.
Há também essa classe de funções chamadas aplicar funções,
que eu don't-- eles são um pouco difícil de explicar,
mas se você olhar em [inaudível] reservado que citei no início,
ele explica-los muito bem em seu apêndice sobre a programação R.
Mais sobre práticas, acrescentando-se a vectores.
Sim?
Eu acho que eu deveria corrigir isso.
Nessa primeira linha, seta vec, que a flecha não deveria estar lá.
Você pode atribuir a um vector, mais uma vez, por ter o seu comprimento mais 1
e atribuir algum valor para que.
Isso vai estender o vector, ou você pode fazer equals c VEC, newvalue VEC.
Novamente, se você usar C com um argumento como um vetor,
a hierarquia resultante fica achatada.
Então você só vai obter um vector que é prorrogado por um.
Nunca faça isso.
>> A razão pela qual você não deve fazer isso é isto.
Quando você atribuir um vetor, ele dá-lhe um certo pedaço de memória.
Se você aumentar esse tamanho do vetor, ele tem que realocar o vector
Em outro lugar.
E assim realocação é muito caro.
Eu não vou entrar em detalhes de como alocadores de memória são implementados
no nível do sistema operacional, mas ele tem um monte de tempo
para encontrar um novo bloco de memória.
E também, se você estiver re-alocação de lotes e lotes
de progressivamente maior Pedaços, você acaba
com algo chamado fragmentação de memória,
onde a memória disponível é dividido em muitos pequenos blocos
no ponto de vista alocadores de memória.
E fica cada vez mais difícil encontrar memória para outras coisas.
Então, ao invés, se você precisar fazer isso, se você precisa para crescer um vetor de uma extremidade
para o outro, em vez de anexar a ele constantemente, você deve pré-alocá-lo.
Vec seta, comprimento do vector é igual a 1.000, ou o que quer.
>> E então você pode apenas atribuir para valores de um dos vectores
um tempo depois de ter atribuído uma vez.
Corri para este, mais uma vez, o meu trabalho de verão quando eu estava escrevendo NRA diferencial
solver equação.
Não simbólica numérica.
A idéia é que uma vez que você tem um valor para a sua solução,
que você usa para calcular a próxima.
Então, meu ingênuo naturais inclinação era para dizer OK,
por isso vou começar com um vector isso é um valor substancial.
Calcule de que o próximo valor que vai para a minha solução de vetores,
e acrescentar isso.
>> Criar algo mais, acrescente isso.
Foi muito, muito lentamente.
E quando eu percebi isso e eu mudei o meu sistema
anexando à presente vetor como 10.000 a 100.000 vezes,
apenas para pré-alocar um vetor e apenas correr com isso.
Eu tenho mais de 1.000 vezes a velocidade para cima.
Portanto, este é um muito comum armadilha para R programação.
Se você precisa para construir um vector peça por peça, pré-alocá-lo.
>> Outra viagem comum up-- esta é minha última slide, não worry-- é o tratamento de erros.
R, para ser franco, não faz realmente fazer isso muito bem.
Há muitos problemas que podem surgir.
Por exemplo, se você receber um array ou um vector a partir de uma função
que você estava esperando um único valor de veio, ou vice-versa,
e você passar isso para uma função que você escreveu que espera um único valor,
que pode ser um problema.
>> Certas funções retornar nulo como fazem, por exemplo,
a partir de uma leitura chave inexistente em uma lista.
Mas nulo não é como C onde se você tentar ler
a partir de um ponteiro de idade, [inaudível] ponteiro para null, ele só SEG falhas
e se você estiver em seu depurador-lo lhe diz exatamente onde você está.
Em vez disso, null será fazer-- funções vai fazer coisas imprevisíveis
se eles são nulos handed.
Como se você está entregue max nulo, ele vai lhe dar o infinito negativo.
E assim, sim.
E assim que isso aconteceu para mim uma vez, quando eu tinha
mudou um monte de campos na minha lista de estrutura
uma vez sem alterá-los em outro lugar quando eu estava lendo a partir deles.
E então eu tenho todos os tipos de aleatório resultados infinidade surgindo
e eu nem idéia de onde eles vieram.
E, infelizmente, não há nenhum modo estrito verdadeiro R
onde você pode dizer se algo parece que poderia ser um erro,
basta parar aí para que eu possa ser disciplinado e corrigir isso.
No entanto, há algo chamado parada se não.
Isso é equivalente a assert de C, se você já conversamos sobre isso.
Eu não acho que afirmam C é um tema de palestras,
mas o seu líder de seção poderia ter ido sobre ele.
E pare de se basicamente não tem qualquer predicado, portanto, qualquer declaração que
pode ser verdadeira ou falsa.
E se é falso, ele pára de seu programa.
Diz-lhe exatamente o que você line foram e que condição falhou.
>> E isso muito útil, por exemplo, verificação de sanidade, entradas de função.
Então, se você tem uma função e você espera que, digamos,
se você deveria me dar uma data, eu quero as datas ser apenas um vector de comprimento 1
e em algum lugar entre 1 e 31.
E se não, eu sei algo está errado.
E eu optar por parar lá antes de este tem batida aleatória em efeitos com código
que é mais difícil de rastrear completamente.
Então essa é uma possível usar para parar se não.
>> De qualquer forma, OK.
Então, isso é o fim.
Muito obrigado por terem vindo.
Eu sou um amador neste.
Então, desculpe se você está entediado ou confusa ou que o têm.
Estou feliz de ter perguntas por e-mail em connorharris@college.harvard.edu.
Isso vale também para todos vendo isso vivem ou mais tarde.
Além disso, embora eu não sou um TF, eu também estou muito
dispostos a servir como um não-oficial conselheiro para quem é
R usando em um projeto final.
>> Se você gostaria de que, em seguida, apenas fale com o seu TF
e, em seguida, escreva-me um e-mail assim Eu sei o que você está trabalhando em
e para que eu possa configurar reunião vezes com você, se quiser.
Então, novamente, muito obrigado.
Espero que tenha gostado.
>> AUDIÊNCIA: [inaudível].
>> CONNER HARRIS: Claro.
>> AUDIÊNCIA: Que tipo de projeto seria um estudante CS usar R para?
CONNER HARRIS: Então, se você não está fazer algo que é puramente em mineração de dados,
por exemplo, e não há muitas coisas
você poderia fazer com que os dados mineração e aprendizagem de máquina.
Você pode querer usar R para um componente de algo.
Eu trouxe, originalmente, o exemplo de se você está escrevendo um site
e você deseja executar automatizada análise estatística do seu servidor
registros em um determinado período de tempo todos os dias, que pode ser algo que é
muito fácil de fazer em apenas uma breve R script que você pode programar
para executar todas as noites, por exemplo.
>> E tenho certeza que, se não há qualquer motivo você
quer estatísticas ou capacidades gráficas e ter esta corrida automaticamente em vez
de ter que interagir com coisas em Excel,
por exemplo, isso é algo você pode querer usar para R.
Então, mais perguntas antes de eu sair?
Não?
Tudo bem, bem, mais uma vez, obrigado Muito por terem vindo.