$ operator is ongeldig voor atomaire vectoren voor dataframe R

Ik heb de volgende code

tourneySeeds<-read.csv("tourney_seeds.csv") 
regSeason<-read.csv("regular_season_compact_results.csv")
playoff_teams <- sort(tourneySeeds$team[which(tourneySeeds$season == "2013")])
...
#Selecting the seeds for season A
playoff_seeds <- tourneySeeds[which(tourneySeeds$season == "2013"), ]
seed_col <- vector()
BPI_col<-vector()
for(i in playoff_teams) {
  val <- match(i, playoff_seeds$team)
  seed_col <- c(seed_col, playoff_seeds$seed[val])
  BPI_col <- c(BPI_col, playoff_seeds$BPI[val])
}
#team_seed <- data.frame("Var1" = playoff_teams, "Freq" =seed_col)
team_seed<-data.frame()
team_seed <- cbind(playoff_teams, seed_col,BPI_col) 
head(team_seed$seed_col)

waar het tourneySeedsdataframe eruitziet

season seed team BPI
1980   W01  1207 5
1980   W02  1210 8
...

Voor head(team_seed$seed_col)krijg ik echter het bericht Error in team_seed$seed_col : $ operator is invalid for atomic vectors

waarom is dit? Ik heb team_seedal ingesteld als een dataframe met seed_col


Antwoord 1, autoriteit 100%

Het probleem is relatief eenvoudig. Je hebt

team_seed <- data.frame()
team_seed <- cbind(playoff_teams, seed_col, BPI_col) 
head(team_seed$seed_col)

Als we dit opsplitsen, ziet u het probleem:

  1. U maakt een leeg gegevensframe en wijst dit toe aan het object team_seed
  2. Je maakt een matrixdoor de vectoren playoff_teams, seed_colen BPI_colaan een kolom te binden.
  3. li>

  4. Je wijstdeze matrix toe aan het object team_seed, en vernietigt zo het lege dataframe dat je in de eerste regel hebt gemaakt. R heeft het gewoon overschreven.
  5. Je probeert dan een component van team_seedte team_seedmaar R klaagt terecht dat dit een atomaire vector is (een matrix is ​​een vector met een dimkenmerk)

Wat je wilt is een variatie op:

team_seed <- data.frame(playoff_teams, seed_col, BPI_col)

er is geen reden om het lege dataframe toe te wijzen. Als je dat doet, moet je het dataframe invullen, niet overschrijven.


Antwoord 2

Verander in plaats daarvan de laatste twee regels code in deze:

team_seed <- data.frame(playoff_teams, seed_col,BPI_col) 
head(team_seed$seed_col)

Het lijkt erop dat u uw data.frame overschrijft met een matrix in uw voorbeeld

Werkt het?

LEAVE A REPLY

Please enter your comment!
Please enter your name here

five + 12 =

Other episodes