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 tourneySeeds
dataframe 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_seed
al 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:
- U maakt een leeg gegevensframe en wijst dit toe aan het object
team_seed
- Je maakt een matrixdoor de vectoren
playoff_teams
,seed_col
enBPI_col
aan een kolom te binden. - 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. - Je probeert dan een component van
team_seed
teteam_seed
maar R klaagt terecht dat dit een atomaire vector is (een matrix is een vector met eendim
kenmerk)
li>
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?