如何在R中创建数据帧后隔离字符向量?

时间:2016-09-25 09:40:10

标签: r dataframe

我有一个带有数字和字符列的数据框,我想要对字符向量进行隔离,以便在我之后选择数据时它不会返回列名和因子级别。

我的问题是我使用包含数字,布尔值和字符值的向量创建数据框,因此我不能在此阶段使用绝缘函数I()

conf1 <- c(name = "conf1", num = 1, bool = TRUE)
conf2 <- c(name = "conf2", num = 10, bool = TRUE)
conf3 <- c(name = "conf3", num = 100, bool = FALSE)

conf1 <- as.data.frame(t(conf1))
conf2 <- as.data.frame(t(conf2))
conf3 <- as.data.frame(t(conf3))

df <- cbind(conf1, conf2, conf3)

数据框是创建的,现在我希望df[1,]$name只返回"conf1"而不是所有级别的列名。

df
   name num  bool
1 conf1   1  TRUE
2 conf2  10  TRUE
3 conf3 100 FALSE

df[1,]$name
 name 
conf1 
Levels: conf1 conf2 conf3

如果不使用像name <- I(c("conf1", "conf2", "conf3"))这样的100%字符向量创建数据框,是否有可能做到这一点? (即我想按配置对数据进行分组)

我似乎无法将数据直接与数据框隔离:

df$name <- I(df$name)

谢谢

编辑:我可以转换数字和字符数据但这个解决方案并不适合我的需要,因为它会使我的代码重载(即我从许多行和列中选择值)。

> as.character(df[1,]$name)
[1] "conf1"

> as.numeric(df[1,]$num)
[1] 1

1 个答案:

答案 0 :(得分:1)

正如我的命令所述。如果不需要,该名称是一个因素,可以采用以下方法:

conf1 <- c(name = "conf1", num = 1, bool = TRUE)
conf2 <- c(name = "conf2", num = 10, bool = TRUE)
conf3 <- c(name = "conf3", num = 100, bool = FALSE)

然后使用参数as.data.frame data.frame而不是stringAsFactor=FALSE使用conf1 <- data.frame(t(conf1), stringsAsFactors = FALSE) conf2 <- data.frame(t(conf2), stringsAsFactors = FALSE) conf3 <- data.frame(t(conf3), stringsAsFactors = FALSE)

stringAsFactor=False

使用df <- data.frame(rbind(conf1,conf2,conf3), stringsAsFactors = FALSE) df$name[1] [1] "conf1" 创建data.frame df会产生以下结果:

> df
   name num  bool
1 conf1   1  TRUE
2 conf2  10  TRUE
3 conf3 100 FALSE

Df看起来不像这样:

$scope.departments