Qual é o significado do símbolo do dólar "$" na função R()?

[[14]} através da aprendizagem R, acabei de encontrar o seguinte código explicado Aqui.

open.account <- function(total) {
  list(
    deposit = function(amount) {
      if(amount <= 0)
        stop("Deposits must be positive!\n")
      total <<- total + amount
      cat(amount, "deposited.  Your balance is", total, "\n\n")
    },
    withdraw = function(amount) {
      if(amount > total)
        stop("You don't have that much money!\n")
      total <<- total - amount
      cat(amount, "withdrawn.  Your balance is", total, "\n\n")
    },
    balance = function() {
      cat("Your balance is", total, "\n\n")
    }
  )
}

ross <- open.account(100)
robert <- open.account(200)

ross$withdraw(30)
ross$balance()
robert$balance()

ross$deposit(50)
ross$balance()
ross$withdraw(500)

Qual é o meu maior interesse sobre este código, aprendendo o uso de "$" símbolo de dólar que se referem a uma função específica internal function em open.account(). Quero dizer esta parte.

    ross$withdraw(30)
    ross$balance()
    robert$balance()

    ross$deposit(50)
    ross$balance()
    ross$withdraw(500)

Perguntas:

1-Qual é o significado do símbolo do dólar "$" em R function() ?
2 - como identificar os seus atributos em funções, especialmente para as funções que vocês adotam de outras ( isto é você não escreveu isso)?
Usei o seguinte guião

> grep("$", open.account())
[1] 1 2 3

mas não é útil que eu queira encontrar uma maneira de extrair o(S) Nome (s) das funções internas que podem ser referenciadas por "$" Sem apenas chamar e procurar o código escrito como > open.account() .
Por exemplo, no caso de open.account() Eu gostaria de ver algo assim:

$deposit
$withdraw
$balance
3-Há alguma referência que eu possa ler mais sobre isso?
tnx!

Author: Daniel, 2017-03-02

3 answers

O $ permite extrair elementos pelo nome de uma lista com nome. Por exemplo

x <- list(a=1, b=2, c=3)
x$b
# [1] 2

Você pode encontrar os nomes de uma lista usando names()

names(x)
# [1] "a" "b" "c"
Este é um operador de extracção básico. Poderá ver a página de ajuda correspondente escrevendo ?Extract em R.
 22
Author: MrFlick, 2017-03-02 16:31:55
Há quatro formas de extracção em R: [, [[, $, e @ A quarta forma também é conhecida como o operador de fenda, e é usada para extrair conteúdo de objetos construídos com o sistema de objetos S4, também conhecido como um objeto formalmente definido em R. A maioria dos usuários iniciais R não trabalham com objetos formalmente definidos, então não vamos discutir o operador de fenda aqui.

O primeiro formulário, [, pode ser usado para extrair o conteúdo de vetores, listas ou quadros de dados.

A segunda e a terceira formas, [[ e $, extraem o conteúdo de um único objecto.

O Operador $ usa um nome para efectuar a extracção como em anObject$aName. Portanto, permite extrair itens de uma lista com base em seus nomes. Uma vez que um data.frame() também é um list(), é particularmente adequado para acessar colunas em um quadro de dados. Dito isto, esta forma não funciona com um índice computado, ou substituição variável em uma função.

Da mesma forma, pode-se usar o [ ou [[ forma-se para extrair um item nomeado de um objecto, como anObject["namedItem"] ou anObject[["namedItem"]].

Para mais detalhes e exemplos usando cada uma das formas do operador, por favor leia o meu artigo formas do operador do extracto.

 6
Author: Len Greski, 2017-11-26 15:31:42

Irá querer frequentemente Seleccionar uma coluna inteira, nomeadamente uma variável específica de uma moldura de dados. Se você quiser selecionar todos os elementos da variável diâmetro, por exemplo, ambos vão fazer o truque: dataframe_name [, colomn_position] nome do dataframe_name [, "nome_ Nome"]

No entanto, há um atalho. Se as suas colunas tiverem nomes, pode usar o sinal$:

Nome do Dataframe_ nome$colomn_ Nome

 0
Author: Naren, 2017-11-01 17:17:18