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

R: add character vector to data.frame row

我的数据框 (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)'时,它会return一个警告信息并且DF的第一行结束是这样的

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

<NA> <NA>   7   8

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

假设初始数据集 ('DF') 与 post 中一样有一些 'factor' 列。在 rbind 向量 ('v') 之前,将 'factor' 列更改为 'character'。为此,创建因子列的逻辑索引 ('indx'),遍历 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)