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

vp_*_*050 2 pivot-table r data-conversion

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

summary.default(pfnew)
Run Code Online (Sandbox Code Playgroud)
  • ID 6016315 - 无 - 数字
  • 迭代器 6016315 -无- 数字
  • 值 6016315 -无- 数字
  • CV 6016315 -非数字

我想创建一个按迭代器和 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)))
Run Code Online (Sandbox Code Playgroud)

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

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

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

小智 6

我刚刚使用不同的 dplyr 函数遇到了相同的错误,并意识到我在调用它后包含了数据帧的名称。尝试从 select 和 summarise 中删除 pfnew$ ,这样它就是 select(c(iterator, CV,ID)) 。