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

R:将字符向量添加到data.frame行,r,vector,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:在[中,假设初始数据集('DF')有一些

我有一个数据帧(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:在
[中,假设初始数据集('DF')有一些“factor”列,如post中所示。在
rbind
向量('v')之前,将“factor”列更改为“character”。为此,创建一个factor列的逻辑索引('indx'),循环通过
factor
列,并转换为character(
lapply(DF[indx],…)
)。
rbind
使用数据集绑定向量,并使用
类型转换列类。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

indx将因子列转换为字符,然后尝试
rbind(data.frame(V1='g',V2='H',V3=7,V4=8),DF)
if`V1,V2..是列名谢谢。只是好奇,如果我有一个长向量和一个包含许多列的data.frame呢。有没有办法不键入“V1=。。。“。谢谢。如果您有一个具有混合类的数据集,如示例所示,那么向量的问题是它只能包含一种类型,因此,当您rbind时,输出数据帧将是所有字符列。
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)