R:将字符向量添加到data.frame行
我有一个数据帧(DF)如下所示: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')有一些
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)