【问题标题】:Error: Must subset columns with a valid subscript vector. x Can't convert from <double> to <integer> due to loss of precision错误:必须使用有效的下标向量对列进行子集化。 x 由于精度损失,无法从 <double> 转换为 <integer>
【发布时间】:2020-07-19 16:05:34
【问题描述】:

我正在处理一个包含所有数字类型变量的数据框

summary.default(pfnew)
  • ID 6016315 -none- 数字
  • 迭代器 6016315 -none- numeric
  • 值 6016315 -none- numeric
  • CV 6016315 -none- 数字

我想创建一个按迭代器和 CV 分组的数据透视表并汇总 ID 的计数。本质上,我想要数据帧中对应于一组特定迭代器和 CV 值的点数。我使用的代码是:

代码

install.packages("tidyr")
install.packages("dplyr")
install.packages("vctrs")
library(vctrs)
library(tidyr)
library(dplyr)
allow_lossy_cast(pivot<-pfnew%>%
  select(pfnew$iterator,pfnew$CV,pfnew$ID)%>%
  summarise(CT=count(pfnew$ID)))

但正如在其他论坛中所讨论的那样,即使在使用 allow_lossy_cast 之后,我也会收到相同的错误消息。

错误:必须使用有效的下标向量对列进行子集化。 x 由于精度损失,无法从 to 转换。

我们如何解决这个问题?或者我们可以用其他方式做同样的工作吗?

【问题讨论】:

    标签: r pivot-table data-conversion


    【解决方案1】:

    我刚刚在使用不同的 dplyr 函数时遇到了同样的错误,并意识到我在调用它后包含了数据框的名称。尝试从 select 中删除 pfnew$ 并汇总,使其成为 select(c(iterator, CV,ID))。

    【讨论】:

      【解决方案2】:

      当您在此处使用数据框调用预测变量时,选择函数会引发错误。尝试将列名重命名为更合适的名称,以防它持续存在(如果您不使用数据框调用预测列,则在名称中使用空格会引发错误,因此请避免在列名中使用空格)并直接使用预测变量名称,这将解决问题。

      示例 - 而不是 pfnew$This is an example, 使用pfnew$This_Is_an_example 然后直接在select中使用这个名字-

      select(This_Is_an_example) %>%
      ....
      

      【讨论】:

      猜你喜欢
      • 2021-10-18
      • 2021-02-02
      • 2020-11-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-07
      • 2019-10-23
      • 1970-01-01
      相关资源
      最近更新 更多