我有一个带有数字和字符列的数据框,我想要对字符向量进行隔离,以便在我之后选择数据时它不会返回列名和因子级别。
我的问题是我使用包含数字,布尔值和字符值的向量创建数据框,因此我不能在此阶段使用绝缘函数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
答案 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