这和预期的一样。
> sizes <- factor(c(1,2,3,7,9,2,1,3,7,3,9,2,3), levels = c(1,3,2,7,9),ordered=TRUE)
> sizes[2]
[1] 2
Levels: 1 < 3 < 2 < 7 < 9
> x=sizes[3]>sizes[2]
> x
[1] FALSE
当 "大小 "是数据框架中的一列,使用read.csv()加载时,我得到这个错误。
> A_Dataset <- read_csv("A_Dataset.csv",
+ col_types = cols(A = col_integer(),
+ B = col_integer(), sizes = col_factor(levels = c("1",
+ "3", "2", "7", "9"))))
> A_Dataset$sizes = factor(A_Dataset$sizes, levels=c(1,3,2,7,9),ordered=TRUE)
> is.ordered(Week1_Dataset$sizes)
[1] TRUE
> x=A_Dataset[2,3]>Week1_Dataset[1,3]
Warning message:
In Ops.factor(left, right) : ‘>’ not meaningful for factors
我如何在数据框架中用数学方法比较 sizes 的值(按级别)?
不能用的原因是你在用胫骨和胫骨比较。建议改为 哈德利-威卡姆的R书的地方。
用[ Subsetting a tibble with [总是返回一个tibble。
我们可以举个例子:
sizes <- factor(c(1,2,3,7,9,2,1,3,7,3,9,2,3), levels = c(1,3,2,7,9),ordered=TRUE)
write.csv(data.frame(A=1:length(sizes),sizes=sizes),"test.csv",row.names=FALSE)
A_Dataset <- read_csv("test.csv",
col_types = cols(A = col_integer(),
sizes = col_factor(levels = c("1","3", "2", "7", "9"))))
A_Dataset$sizes = factor(A_Dataset$sizes, levels=c(1,3,2,7,9),ordered=TRUE)
如果你看一下这个类:
class(A_Dataset[1,2])
[1] "tbl_df" "tbl" "data.frame"
你不能比较data. frames, 你可以这样做:
class(A_Dataset$sizes[2])
[1] "ordered" "factor"
A_Dataset$sizes[2] > A_Dataset$sizes[1]
[1] TRUE
这样就可以了
as.data.frame(A_Dataset[2,2]) >as.data.frame(A_Dataset[1,2])
sizes
[1,] TRUE