【问题标题】:$ operator is invalid for atomic vectors for dataframe R$ 运算符对数据帧 R 的原子向量无效
【发布时间】:2015-09-24 21:36:35
【问题描述】:

我有以下代码

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)

tourneySeeds 数据框的样子

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

但是,对于head(team_seed$seed_col),我收到消息Error in team_seed$seed_col : $ operator is invalid for atomic vectors

这是为什么?我已经将team_seed 设置为包含seed_col 的数据框

【问题讨论】:

  • 一个简单的解决方案是使用head(team_seed[,"seed_col"]),它适用于原子向量
  • 但我不希望 team_seed$seed_col 成为原子向量,因为稍后在代码中我使用了 cbind 和其他向量将它们组合成数据框
  • 检查class(team_seed)。它很可能会说"matrix"。美元符号运算符不适用于矩阵。如果您想使用它,请尝试as.data.frame(team_seed)

标签: r dataframe


【解决方案1】:

问题比较简单。你有

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

如果我们将其分解,您会发现问题:

  1. 您创建一个空数据框并将其分配给对象team_seed
  2. 您可以通过列绑定向量playoff_teamsseed_colBPI_col 来创建一个矩阵
  3. 分配这个矩阵到对象team_seed,从而消除了您在第一行中创建的空数据框。 R 刚刚覆盖了它。
  4. 然后您尝试 head() team_seed 的一个组件,但 R 正确地抱怨这是一个原子向量(矩阵是具有 dim 属性的向量)

你想要的是一些变化:

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

没有理由分配空数据帧。如果这样做,则需要填写数据框,而不是覆盖它。

【讨论】:

    【解决方案2】:

    将最后两行代码改为:

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

    您的示例中似乎用矩阵覆盖了您的 data.frame

    有效吗?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-08-20
      • 2014-05-15
      • 2013-07-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多