R将矢量转换为数字参考

时间:2017-02-18 21:09:29

标签: r

我需要将矢量转换为数字字符串。我在here中尝试了解决方案,但收到错误消息

例如,使用此数据集:

v1 <- rep(c('a','b'),3)
v2 <- rep(c('c','d','e'),2)
vdf <- data.frame(v1, v2)

sapply(vdf, class)
      v1       v2 
"factor" "factor" 

sapply(vdf, mode) #I'm not sure why the mode shows as numeric as the value is a charecter
       v1        v2 
"numeric" "numeric" 

我想进行转换,以便每列都将每个向量引用为1,2,3,... like:

v1c <- rep(c(1,2),3)
v2c <- rep(c(1,2,3),2)
vdfc <- data.frame(v1c, v2c)

sapply(vdfc, class)
      v1c       v2c 
"numeric" "numeric" 
     sapply(vdfc, mode)
      v1c       v2c 
"numeric" "numeric" 

请注意,我有一些不同数量的列

当我尝试使用Dieter Menne的解决方案进行转换时,我得到了错误消息:

df$iv1 = as.integer(df$v1) 
df$iv1 = as.integer(as.factor(df$v1))

Error in `$<-.data.frame`(`*tmp*`, "iv1", value = integer(0)) : replacement has 0 rows, data has 10

我做错了什么还是有更好的方法来转换数据?

1 个答案:

答案 0 :(得分:0)

感谢Sotos的评论,我已经轻松解决了这个问题。根据他的评论,对我有用的解决方案是

vdf []&lt; - lapply(vdf,as.integer)

这可以一次转换整个数据帧。

希望它可以帮助别人