我有一个这样的数据框:
V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 V11
8 10 0.2 0.4 0 0.0 1.2 0.2 4.2 3.4 2.5
4 5 1.0 0 2 4.5 0 1.1 0 1 2.0
.....................................
,即V2-V11的列有一些十进制值。我想做的是将多行(2000)中的所有行转换为整数。
我尝试使用
apply(df, 1, as.integer())
但是,它没有用。
答案 0 :(得分:0)
来自as.integer
的R文档:
非整数数值被截断为零(即as.integer(x)等于其中的trunc(x)),并且丢弃复数的虚部(带有警告)。
所以听起来我们可以在这里使用trunc
。
> trunc(df)
# V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 V11
# 1 8 10 0 0 0 0 1 0 4 3 2
# 2 4 5 1 0 2 4 0 1 0 1 2
答案 1 :(得分:0)
您还可以创建一个类
setClass("NumerictoInteger")
setAs("character", "NumerictoInteger", function(from) as.integer(from))
dat <- read.table(text="V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 V11
8 10 0.2 0.4 0 0.0 1.2 0.2 4.2 3.4 2.5
4 5 1.0 0 2 4.5 0 1.1 0 1 2.0",sep="",header=T,stringsAsFactors=FALSE,colClasses="NumerictoInteger")
dat
V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 V11
1 8 10 0 0 0 0 1 0 4 3 2
2 4 5 1 0 2 4 0 1 0 1 2