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)
我的数据框 (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)