R语言中基于阈值过滤数值列表的逻辑失效问题求助
解决你的二元转换逻辑问题
看起来你是要对一组数值做二元映射(>0.09转0,<0.09转1),但写的predicted_train_0_1[predict...代码出了问题,我来帮你梳理下可能的解决思路和正确实现方式。
第一步:明确你的数据结构
先把你的原始列表整理成更清晰的键值对形式:
V8530: 0.00000009686643
V6196: 0.00297853602192
V714: 0.99999999760977
V9461: 0.00003742696819
V9518: 0.00141335323766
V9511: 0.00047082401517
V9651: 0.00011655255640
V6358: 0.00000056338519
V5930: 0.00000155667916
下面我会针对两种常见的数据结构给出实现方案。
第二步:正确实现转换逻辑
如果是字典结构(带Vxxx标识)
# 原始数据字典 original_data = { "V8530": 0.00000009686643, "V6196": 0.00297853602192, "V714": 0.99999999760977, "V9461": 0.00003742696819, "V9518": 0.00141335323766, "V9511": 0.00047082401517, "V9651": 0.00011655255640, "V6358": 0.00000056338519, "V5930": 0.00000155667916 } # 简洁的字典推导式实现转换 predicted_train_0_1 = {k: 0 if v > 0.09 else 1 for k, v in original_data.items()}
如果是纯数值列表(仅保留数值)
original_values = [ 0.00000009686643, 0.00297853602192, 0.99999999760977, 0.00003742696819, 0.00141335323766, 0.00047082401517, 0.00011655255640, 0.00000056338519, 0.00000155667916 ] # 列表推导式完成转换 predicted_train_0_1 = [0 if v > 0.09 else 1 for v in original_values]
第三步:排查你原代码的可能问题
你提到的predicted_train_0_1[predict...大概率出了以下几种问题:
- 语法错误:
predict变量未定义,或者用错了索引方式(比如字典不能用列表式索引) - 逻辑错误:不小心把转换条件写反了(比如写成>0.09转1)
- 数据不匹配:
predicted_train_0_1是固定长度的数组,但原始数据长度和它不一致
如果能贴出完整的错误信息或代码片段,能更精准定位问题,但上面的实现应该能帮你完成需求。
内容的提问来源于stack exchange,提问作者NellMartinez
相关产品推荐
相关产品推荐

