Bird
Raised Fist0
R Programmingprogramming~10 mins

Accessing columns ($, []) in R Programming - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - Accessing columns ($, [])
Start with data frame
↓
Choose column name
↓
$ operator
→Extract column as vector
↓
[
↓
[
↓
Use extracted column for analysis
You start with a data frame, pick a column name, then use $ or [] operators to get that column either as a vector or a data frame.
Execution Sample
R Programming
df <- data.frame(name=c("Ann", "Bob"), age=c(25, 30))
age_vector <- df$age
age_df <- df["age"]
This code creates a data frame and extracts the 'age' column as a vector and as a one-column data frame.
Execution Table
StepActionCodeResult TypeValue
1Create data framedf <- data.frame(name=c("Ann", "Bob"), age=c(25, 30))data.framename: Ann, Bob; age: 25, 30
2Extract 'age' column with $age_vector <- df$agenumeric vector25, 30
3Extract 'age' column with ["age"]age_df <- df["age"]data.frameage: 25, 30
4Check type of age_vectorclass(age_vector)character"numeric"
5Check type of age_dfclass(age_df)character"data.frame"
💡 All columns extracted; $ returns vector, ["col"] returns data frame
Variable Tracker
VariableStartAfter Step 1After Step 2After Step 3Final
dfNULLdata.frame with 2 rows and 2 columnssamesamesame
age_vectorNULLNULLnumeric vector c(25, 30)samesame
age_dfNULLNULLNULLdata.frame with 1 column 'age'same
Key Moments - 2 Insights
Why does df$age return a vector but df["age"] returns a data frame?
Because $ extracts the column as a vector directly (see Step 2), while ["age"] keeps the data frame structure with one column (see Step 3).
Can I use df["age"] to get a vector like df$age?
No, df["age"] always returns a data frame. To get a vector, use df[["age"]] or df$age.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution table, what is the type of age_vector after Step 2?
Alist
Bdata frame
Cnumeric vector
Dcharacter vector
💡 Hint
Check the 'Result Type' column in Step 2 of the execution table.
At which step does age_df get assigned a data frame?
AStep 2
BStep 3
CStep 1
DStep 4
💡 Hint
Look at the 'Action' and 'Result Type' columns in the execution table.
If you want to extract the 'age' column as a vector using brackets, which code would you use?
Adf[["age"]]
Bdf["age"]
Cdf$age
Ddf[age]
💡 Hint
Recall that df["age"] returns a data frame, but df[["age"]] returns a vector.
Concept Snapshot
Access columns in R data frames:
- Use $ to get a column as a vector: df$col
- Use [["col"]] to get a column as a vector: df[["col"]]
- Use ["col"] to get a one-column data frame: df["col"]
- $ and [[ ]] extract vectors; [ ] extracts data frames
- Choose based on whether you want a vector or data frame
Full Transcript
This lesson shows how to access columns in R data frames using $ and [] operators. Starting with a data frame, you can extract a column as a vector using df$col or df[["col"]]. Using df["col"] extracts the column but keeps it as a data frame with one column. The execution table traces creating a data frame, extracting the 'age' column as a vector and as a data frame, and checking their types. Key moments clarify why $ returns a vector and ["col"] returns a data frame. The quiz tests understanding of these differences. Remember, use $ or [[ ]] for vectors, and [ ] for data frames.

Practice

(1/5)
1. In R, which operator is used to extract a column from a dataframe as a vector by its name?
easy
A. The $ operator
B. The [] operator with column name
C. The [[]] operator with column index
D. The : operator

Solution

  1. Step 1: Understand $ operator usage

    The $ operator extracts a column from a dataframe as a vector by its name.
  2. Step 2: Compare with other operators

    The [] operator returns a dataframe, [[]] returns a vector but requires double brackets, and : is unrelated.
  3. Final Answer:

    The $ operator -> Option A
  4. Quick Check:

    $ extracts vector column = C [OK]
Hint: Use $ for quick vector column access by name [OK]
Common Mistakes:
  • Using [] returns a dataframe, not a vector
  • Confusing [[]] with []
  • Using : operator for columns
2. Which of the following is the correct syntax to get a one-column dataframe named 'age' from dataframe df?
easy
A. df['age']
B. df$age
C. df[['age']]
D. df.age

Solution

  1. Step 1: Identify syntax for one-column dataframe

    Using single brackets with a column name, like df['age'], returns a one-column dataframe.
  2. Step 2: Differentiate from other options

    df$age and df[['age']] return vectors, df.age is invalid syntax in R.
  3. Final Answer:

    df['age'] -> Option A
  4. Quick Check:

    Single brackets with name = one-column dataframe [OK]
Hint: Use single brackets with quotes for one-column dataframe [OK]
Common Mistakes:
  • Using $ returns a vector, not dataframe
  • Using [[]] returns a vector, not dataframe
  • Using dot notation (df.age) which is invalid
3. Given the dataframe df <- data.frame(name=c('Ann','Bob'), age=c(25,30)), what is the output of class(df['age'])?
medium
A. "integer"
B. "numeric"
C. "data.frame"
D. "vector"

Solution

  1. Step 1: Understand df['age'] output type

    Using single brackets with a column name returns a dataframe, so class(df['age']) is "data.frame".
  2. Step 2: Differentiate from vector classes

    Using df$age or df[['age']] returns a vector of class "numeric" or "integer" but not a dataframe.
  3. Final Answer:

    "data.frame" -> Option C
  4. Quick Check:

    Single bracket returns dataframe class = A [OK]
Hint: Single brackets keep dataframe class, double brackets extract vector [OK]
Common Mistakes:
  • Assuming df['age'] returns a vector
  • Confusing class of vector and dataframe
  • Using df$age which returns numeric vector
4. Consider the code: df <- data.frame(x=1:3, y=4:6); col <- df['x'] + 1. What is the error in this code?
medium
A. The column name 'x' is incorrect
B. You cannot add 1 to a dataframe
C. df['x'] returns a vector, so addition is valid
D. The dataframe df is not defined

Solution

  1. Step 1: Analyze df['x'] type

    df['x'] returns a one-column dataframe, not a vector.
  2. Step 2: Understand addition operation

    Adding 1 to a dataframe causes an error because arithmetic operations expect vectors or numbers.
  3. Final Answer:

    You cannot add 1 to a dataframe -> Option B
  4. Quick Check:

    Adding number to dataframe causes error = A [OK]
Hint: Use [[]] or $ to get vector before arithmetic [OK]
Common Mistakes:
  • Assuming df['x'] is a vector
  • Using wrong column name
  • Ignoring that df is defined
5. You want to add 5 to every value in the 'score' column of dataframe df and keep the result as a vector. Which code correctly does this?
hard
A. df.score + 5
B. df['score'] + 5
C. df[score] + 5
D. df[['score']] + 5

Solution

  1. Step 1: Identify how to get vector column

    df[['score']] extracts the 'score' column as a vector suitable for arithmetic.
  2. Step 2: Check other options

    df.score is invalid syntax in R (Python-style dot notation), df['score'] returns a dataframe causing error on addition, df[score] is invalid without quotes around column name.
  3. Final Answer:

    df[['score']] + 5 -> Option D
  4. Quick Check:

    Double brackets extract vector for math = D [OK]
Hint: Use double brackets to get vector for calculations [OK]
Common Mistakes:
  • Using single brackets returns dataframe, causing errors
  • Forgetting quotes around column name in []
  • Assuming df[score] works without quotes
  • Using Python-style dot notation (df.score)
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard