• R语言
  • 如何把数据框里面的所有列的属性重新设置

我想把下面数据框的第1,2,3,4列设成integer;后面的设置成character,

有木有简单的一句话的代码?

PS:因为这是用代码从网上下的,组成了一个对象,不能用在read()等函数里面设置参数解决。。。

<br />
> str(gp.a)<br />
'data.frame':	22176 obs. of  10 variables:<br />
 $ ID        : chr  "1" "2" "3" "4" ...<br />
 $ Block     : chr  "1" "1" "1" "1" ...<br />
 $ Column    : chr  "1" "2" "3" "4" ...<br />
 $ Row       : chr  "1" "1" "1" "1" ...<br />
 $ Name      : Factor w/ 21655 levels "AF354045.1:c9973-8948",..: 2 6 10 14 4 8 12 16 3 7 ...<br />
 $ GB_LIST   : Factor w/ 253 levels "","AY177694",..: 1 1 1 1 1 1 1 1 1 1 ...<br />
 $ SEQUENCE  : Factor w/ 21652 levels "","AAAGGAGGGACGATAAGCAGGCCGTGAAGCAAATGAACAAGGCGGTTGCC",..: 25 24 3 34 21 20 15 63 29 62 ...<br />
 $ LocusID   : Factor w/ 19913 levels "","LOC_Os08g17440.1",..: 2 5 9 12 3 7 10 14 1 6 ...<br />
 $ Annotation: Factor w/ 4383 levels "14-3-3, putative, expressed",..: 20 24 20 35 46 34 20 20 23 20 ...<br />
 $ SPOT_ID   : Factor w/ 21653 levels "--AF354045.1:c9973-8948",..: 9 12 16 20 10 14 18 22 2 13 ...<br />
</p>

使用

<br />
gp.a$ID -> as.integer(gp.a$ID)<br />


等代码稍显麻烦。。。求大神更便捷的函数
</p>

试一下 with 或者 within,仅仅是命令上简单些。毕竟只有你自己才能知道每一列想要什么类型。

convert.format <- function(x){

if(is.character(x)){

as.integer(x)

}else if(is.factor(x))

as.character(x)

else

x

}

gp.a[] <- lapply(gp.a, convert.format)

有个土办法:

先写成txt,再用read.table读进来,加‘stringsAsFactors = F’参数。