R错误:"在数值表达式中有19个元素:只使用第一个元素"

Fre*_*ill 4 r decision-tree

我创建了一个数据帧:

totalDeposit <- cumsum(testd$TermDepositAMT[s1$ix])
Run Code Online (Sandbox Code Playgroud)

这基本上是计算测试数据帧中TermDeposit金额的累计和并将其存储在总存款中.这工作正常.

然后,我需要计算存款金额的平均值,我使用以下内容:

avgDeposit <- totalDeposit / (1:testd)
Run Code Online (Sandbox Code Playgroud)

但得到一条错误信息

   Error in 1:testd : NA/NaN argument
In addition: Warning message:
In 1:testd : numerical expression has 19 elements: only the first used
Run Code Online (Sandbox Code Playgroud)

testd有大约8000个观察值和19个变量.

有人可以帮我解决这个问题吗?我试图在网上找到这个错误信息,但到目前为止我所知道的是1:testd基本上使R读取测试为不是的数字,因此我收到错误信息.简单地采用mean(totalDeposit)就可以了吗?我试过了,但我得到的数字是荒谬的,没有代表平均值.

谢谢您的帮助.

小智 7

在这种情况下,错误消息很有用.

当你说1:N,你所说的R是"给我1和N之间的整数序列".它是从integer1到integer2.testd不是整数,它是(最多)整数的整数向量,因此R在testd计算序列时除了第一个值之外的所有值.替代方案可能是一个可怕的错误或一序列 - 一个介于1和第一个值testd之间,另一个介于1和第二个值之间testd......等等.

你想要的是1:nrow(testd),如果testd是一个数据框,1:length(testd)或者seq_along(testd)它是一个列表或向量.

但基于这个问题 - 是否需要计算平均值? - 你实际上是在接近这个错误,因为你不需要一系列的值,你只需要一个:因为平均值=总数/进入总数的元素数量,你只需要'元素数' - 可以简单地检索nrow(testd).