'double'类型的数据的子范围
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了'double'类型的数据的子范围相关的知识,希望对你有一定的参考价值。
问题已在注释中解决!
我有一个9个元素(Spec_opt
)的列表(称为“ S3 Spectra
”)。这些元素中的两个(“ data
”和“ freq
”)的数据类型为'double'
(请参见所附的屏幕转储)。
呼叫Spec_opt$freq[1:5]
看起来像这样:
> Spec_opt$freq[1:5] [1] 19.65228 19.65205 19.65183 19.65160 19.65137
我需要对这些值的范围进行子集化,并且我已经尝试过:
Spec_opt$freq <- Spec_opt$freq %>% filter(Spec_opt$freq %in% (-0.5:9.5))
但是出现此错误:
Error in UseMethod("filter_") : no applicable method for 'filter_' applied to an object of class "c('double', 'numeric')"
此:
Spec_opt$freq <- Spec_opt$freq[which(Spec_opt$freq >= -.5 | Spec_opt$freq <= 9.5)]
不做任何事情。
从其他帖子中我了解到这是数据类型('double'
)的问题。
执行此操作:Spec_opt$freq <- lapply(Spec_opt$freq, as.numeric)
,
将Spec_opt$freq
转换为列表,其中每个元素仍为'double'类型]
现在调用Spec_opt $ freq [1:5]看起来像这样:
Spec_opt$freq[1:10] [[1]] [1] 19.65228 [[2]] [1] 19.65205 [[3]] [1] 19.65183 [[4]] [1] 19.6516 [[5]] [1] 19.65137
有人可以帮助我,将
'double'
转换为“普通”values
还是帮助我以这种格式对数据进行子集化?
[对不起,我不知道如何提供数据,如果我调用dput(Spec_opt$freq[1:50])
提供一个子集(总共n = 130,000个值),它只是给出一个数字列表,其中问题没有得到解决一直在说...
> dput(Spec_opt$freq[1:5]) c(19.6522802209025, 19.6520531555891, 19.6518260902757, 19.6515990249622, 19.6513719596488)
整个
Spec_opt
对象很大,并且dput(Spec_opt)
无法在我的“窗口”中打印。让我知道是否可以使这个示例更好?
问题已在注释中解决!我有9个元素(S3光谱)的列表(称为“ Spec_opt”)。其中两个元素(“ data”和“ freq”)的数据类型为“ double”(请参见随附的屏幕转储)。 ...
编辑:
处理某些错误的一种方法是将列表转换为数据框,然后应用过滤器:
以上是关于'double'类型的数据的子范围的主要内容,如果未能解决你的问题,请参考以下文章
打破异常'_InternalLinkedHashMap '不是'Map'类型的子类型 “
ctypes结构体里面有double成员,结构体传给c dll以后,double类型成员的值就变了
matlab boundaries和fchcode函数无法执行的解决办法 未定义与 'double' 类型的输入参数相对应的函数 'boundaries'