我需要将矢量转换为数字字符串。我在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
我做错了什么还是有更好的方法来转换数据?
答案 0 :(得分:0)
感谢Sotos的评论,我已经轻松解决了这个问题。根据他的评论,对我有用的解决方案是
vdf []&lt; - lapply(vdf,as.integer)
这可以一次转换整个数据帧。
希望它可以帮助别人