不,你正在寻找一个因素,而不是一个整数:
DF = data.frame(x = c("1/1","2/3"))
typeof(DF$x) # "integer"
class(DF$x) # "factor"
了解存储型(typeof
)是很少重要。我建议阅读R语言定义的前几个部分,以加快R的课程和其他与您以前可能使用的语言区分的怪癖。要达到此目的,请键入help.start()
并单击“R语言定义”。
从文件读取,R将字符串转换为因子,这些因子是分类变量。它不评估你在那里的算术表达式(1/1
或2/3
),也没有任何分数的类,只有整数,复数和浮点数。
如果你想存储你的分数精确,单独存放的分子和分母:
library(data.table)
DF[,c("num","den")] <- tstrsplit(as.character(DF$x), "/", type.convert = TRUE)
DF
# x num den
# 1 1/1 1 1
# 2 2/3 2 3
到现在评估分数,你可以使用
DF$xnum <- DF$num/DF$den # obviously not an integer
DF
# x num den xnum
# 1 1/1 1 1 1.0000000
# 2 2/3 2 3 0.6666667
要查看的所有类列,使用
sapply(DF, class)
# x num den xnum
# "factor" "integer" "integer" "numeric"
评估分数的捷径是DF$xnum <- sapply(as.character(DF$x), function(z) eval(parse(text=z)))
,但这种攻击通常是强烈的不鼓励。
你可以显示你的一些数据吗?您可以将'dput(head(res))'的输出复制粘贴到您的问题中。 – Heroka
这是一个非常大的数据 –
@Heroka你能明确你到底想知道什么 –