如何将R中的列名及其对应类型保存到excel中?

如何将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

我有一个大于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
文件可以在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")