如何将R中的列名及其对应类型保存到excel中?
我有一个大于200列的R数据集。我需要得到每列的类,并将其输入excel,列名称及其对应的类作为两列1。使用lappy/sapply和堆叠/熔化 您可以使用如何将R中的列名及其对应类型保存到excel中?,r,class,R,Class,我有一个大于200列的R数据集。我需要得到每列的类,并将其输入excel,列名称及其对应的类作为两列1。使用lappy/sapply和堆叠/熔化 您可以使用lapply/sapply获取每列的类,然后使用base R中的stack或restrape2中的melt获取2列数据.frame res <- stack(lapply(df, class)) #or library(reshape2) res1<- melt(lapply(df, class)) .csv文件可以在e
lapply/sapply
获取每列的类
,然后使用base R
中的stack
或restrape2中的melt
获取2列数据.frame
res <- stack(lapply(df, class))
#or
library(reshape2)
res1<- melt(lapply(df, class))
.csv
文件可以在excel中打开
2.来自str的输出
或者您可以使用capture.output
和regex
从str
获取所需信息,并使用read.table将其转换为data.frame
v1 <- capture.output(str(df))
v2 <- grep("\\$", v1, value=TRUE)
res2 <- read.table(text=gsub(" +\\$ +(.*)\\: +([A-Za-z]+) +.*", "\\1 \\2", v2),
sep="",header=FALSE,stringsAsFactors=FALSE)
head(res2,2)
# V1 V2
#1 t02.clase Factor
#2 Std_A_CLI_monto_sucursal_1 chr
regex+str的v1(+1)combinaiton@DavidArenburg谢谢,我想不需要regex
位,因为lappy
方法更容易使用。我认为从长远来看,它可能在内存和时间方面都更有效。尤其是与stringi
s函数之一结合使用时。在某些情况下,这可能是非常有用的功能packages@David阿伦伯格:是的,可能是。顺便问一下,你有没有在因子变量上测试过它,我认为它没有给出预期的结果
v1 <- capture.output(str(df))
v2 <- grep("\\$", v1, value=TRUE)
res2 <- read.table(text=gsub(" +\\$ +(.*)\\: +([A-Za-z]+) +.*", "\\1 \\2", v2),
sep="",header=FALSE,stringsAsFactors=FALSE)
head(res2,2)
# V1 V2
#1 t02.clase Factor
#2 Std_A_CLI_monto_sucursal_1 chr
df <-structure(list(t02.clase = structure(c(1L, 1L, 1L), .Label = "AK",
class = "factor"),Std_A_CLI_monto_sucursal_1 = c("0", "0", "0"),
Std_A_CLI_monto_sucursal_2 = c(0, 0.01303586, 0), Std_A_CLI_monto_sucursal_3 =
c(0.051311597, 0.003442244, 0.017347593), Std_A_CLI_monto_sucursal_4 = c(0L,
0L, 0L), Std_A_CLI_promociones = c(0.4736842, 0.5, 0), Std_A_CLI_dias_cliente =
c(0.57061341, 0.55492154, 0.05991441), Std_A_CLI_sucursales = c(0.05555556,
0.05555556, 0.05555556)), .Names = c("t02.clase", "Std_A_CLI_monto_sucursal_1",
"Std_A_CLI_monto_sucursal_2", "Std_A_CLI_monto_sucursal_3",
"Std_A_CLI_monto_sucursal_4", "Std_A_CLI_promociones", "Std_A_CLI_dias_cliente",
"Std_A_CLI_sucursales"), row.names = c("1", "2", "3"), class = "data.frame")