R:将字符向量添加到data.frame行

时间:2015-03-13 14:59:57

标签: r vector

我的数据框(DF)如下所示:

a   e   1   4
d   f   2   5
c   g   3   6

我需要在DF的第一行插入一个向量c(“g”,“H”,7,8),使它看起来像这样

g   H   7   8
a   e   1   4
d   f   2   5
c   g   3   6

但是当我使用这个命令行`InsertRow(DF,vector,RowNum = 1)'时,它会返回一条警告信息,DF的第一行就像这样结束了

警告讯息: 1:在[<-.factor*tmp*,iseq,value =“g”):   无效因子水平,NA生成 2:在[<-.factor*tmp*,iseq,value =“H”)中:   无效因素水平,NA生成`

<NA> <NA>   7   8

有谁能告诉我如何解决这个问题?提前谢谢。

1 个答案:

答案 0 :(得分:1)

假设初始数据集(&#39; DF&#39;)有一些因素&#39;列中的列。在rbind向量(&#39; v&#39;)之前,更改&#39;因素&#39;列到&#39;字符&#39;。为此,创建因子列的逻辑索引(&#39; indx&#39;),遍历factor列并转换为字符(lapply(DF[indx],..))。 rbind带有数据集的向量,并使用type.convert转换列类。

indx <- sapply(DF, is.factor)
DF[indx] <- lapply(DF[indx], as.character)
DF1 <- rbind(v, DF)
DF1[] <- lapply(DF1, type.convert)
DF1
#  V1 V2 V3 V4
#1  g  H  7  8
#2  a  e  1  4
#3  d  f  2  5
#4  c  g  3  6

str(DF1)
#'data.frame':  4 obs. of  4 variables:
# $ V1: Factor w/ 4 levels "a","c","d","g": 4 1 3 2
# $ V2: Factor w/ 4 levels "e","f","g","H": 4 1 2 3
# $ V3: int  7 1 2 3
# $ V4: int  8 4 5 6

数据

DF <- structure(list(V1 = structure(c(1L, 3L, 2L), .Label = c("a", 
 "c", "d"), class = "factor"), V2 = structure(1:3, .Label = c("e", 
 "f", "g"), class = "factor"), V3 = 1:3, V4 = 4:6), .Names = c("V1", 
"V2", "V3", "V4"), class = "data.frame", row.names = c(NA, -3L))

v <- c('g', 'H', 7, 8)