R - 在数据框中创建新列时出错

时间:2017-06-26 19:29:45

标签: r dataframe error-handling

下午好,

我试图计算R中数据框架中棒球的Slugging Percentage,称为"击球",由" Batting.csv"在Sean Lahaman's Website找到。

每个维基百科的Slugging Percentage公式如下: ([单打] + [双打x 2] + [三重奏x 3] + [本垒打x 4])/ [蝙蝠]

(基本上是总基数除以蝙蝠)。

这是我的R代码:

# Import batting data
batting <- read.csv('Batting.csv')

# Create X1B (Singles)
batting$X1B <- batting$H - batting$X2B - batting$X3B - batting$HR

# Create Slugging Average (SLG)
batting$SLG <- 
((1 * batting$x1B) + (2 * batting$X2B) + (3 * batting$X3B) + (4 * batting$HR)) / 
batting$AB

以下是错误消息:

Error in `$<-.data.frame`(`*tmp*`, SLG, value = numeric(0)) : 
replacement has 0 rows, data has 97889

谢谢!

1 个答案:

答案 0 :(得分:0)

这有效:

> batting$SLG = (batting$X1B + 2*batting$X2B + 3*batting$X3B + 4*batting$HR)/batting$AB
> summary(batting$SLG)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
  0.000   0.176   0.309   0.290   0.398   4.000   15381 

在您的示例中,x中有一个小写batting$x1B。确保它如上所述大写。