r - 如何将因子转换为数字
问题描述
我的数据:
data <- read.table(text = "Component Method Average StdErr
N170 Image 0,58904 0,0066948
P300 Image 0,84932 0,0048678
Sham Image 0,23944 0,0058078
N170 Topo 0,64384 0,0065159
P300 Topo 0,90278 0,0040316
Sham Topo 0,32877 0,0063921
N170 Joint 0,65278 0,0064788
P300 Joint 0,84722 0,0048959
Sham Joint 0,26230 0,0059937", header = TRUE)
我想用 ggplot2 来绘制它。尝试计算误差线时,出现错误。我发现这是因为“平均”是一个因素,而不是一个数字。运行我的代码:
ggplot(data=data, aes(x=Method, y=Average, group=Component)) +
geom_line(aes(colour=Component), size=1)+
geom_pointrange(aes(ymin=Average-StdErr, ymax=Average+StdErr))+
geom_point(aes(colour=Component), size=3)+
theme_classic()
给我这个错误信息:
Warning messages: 1: In Ops.factor(Average, StdErr) : ‘-’ not meaningful for factors 2: In Ops.factor(Average, StdErr) : ‘+’ not meaningful for factors 3: Removed 9 rows containing missing values (geom_pointrange).
我尝试使用此代码将 Average 和 StdErr 转换为数字,但它没有解决我的问题。
data$Average <- as.numeric(data$Average)
data$StdErr <- as.numeric(as.vector(data$StdErr))
或者,我尝试以 .csv 格式读取我的数据:
data <- read.csv(file="C:/Users/XXX/Desktop/XXX/XX/ggplot/corrComp_agg.csv",
header=TRUE, sep=",")
但收到一条错误消息:
Error in read.table(file = file, header = header, sep = sep, quote = quote, : more columns than column names
我错过了什么?
解决方案
您应该将逗号读取为十进制字符..dec = ","
在read.table
语句中使用
data <- read.table(text = "Component Method Average StdErr
N170 Image 0,58904 0,0066948
P300 Image 0,84932 0,0048678
Sham Image 0,23944 0,0058078
N170 Topo 0,64384 0,0065159
P300 Topo 0,90278 0,0040316
Sham Topo 0,32877 0,0063921
N170 Joint 0,65278 0,0064788
P300 Joint 0,84722 0,0048959
Sham Joint 0,26230 0,0059937", dec =",", header = TRUE)
现在你的Average
andStdErr
是数字
sapply(data, class)
#Component Method Average StdErr
# "factor" "factor" "numeric" "numeric"
所以,现在绘图很容易
ggplot(data=data, aes(x=Method, y=Average, group=Component)) +
geom_line(aes(colour=Component), size=1)+
geom_pointrange(aes(ymin=Average-StdErr, ymax=Average+StdErr))+
geom_point(aes(colour=Component), size=3)+
theme_classic()
推荐阅读
- c++ - 在派生类中创建构造函数时
- javascript - 正则表达式从 css 中删除 @font-face 规则
- javascript - 如何在javascript中获取鼠标位置?
- graphql - 无法将自定义结果从解析器传递到 Graphql
- django - django - 如何获取团队的所有项目?
- javascript - PhaserJS 3.0 如何将图像放置在屏幕右下方?
- reactjs - InvalidValueError:setMap:不是 Map 的实例;而不是 StreetViewPanorama @react-google-maps/api 的实例
- r - 将具有许多块的字符串向量转换为具有标头的数据帧
- swift - 如何使 SKSpritenode 移动到 swift SpriteKit 中的触摸位置
- c++ - 为什么我的代码在执行时的初始嵌套 for 循环中进入无限循环?