将任意数量的向量转换为数据帧,同时保留数据类型并将向量名称用作R中的列名称

史蒂夫

是否有一个简单的函数(最好是用户编写的,或者是在R中找到的函数),该函数可以接收任意数量的向量,并生成保留向量的数据类型并使用向量变量的名称作为列名称的数据框?

一个例子

输入(向量)

> var_a # character
[1] "a" "b" "c"

> var_b # numeric
[1] 1 3 4

> var_c # factor
[1] red   black black
Levels: black red

所需的输出

  var_a var_b var_c
1     a     1   red
2     b     3 black
3     c     4 black

课程在哪里

sapply(my_dataframe, class)

#      var_a       var_b       var_c 
#"character"   "numeric"    "factor"

尝试1-使用 cbind

使用cbind将产生一个矩阵(具有单个数据类型)-因此此方法不保留向量的原始数据类型(它将所有列更改为字符)

first_method <- cbind(var_a, var_b, var_c)

尝试2-使用do.call(类似于此处

在这种情况下,数据类型将丢失,矢量变量的名称也会丢失

ls <- list(var_a, var_b, var_c)
second_method <- data.frame(do.call(cbind, ls))
second_method %>% sapply(class)
#       X1       X2       X3 
# "factor" "factor" "factor"

尝试3-使用 data.frame

此方法很近(它在数据帧中将向量名称保留为列名称),但是不幸的是,它将字符数据类型转换为因子

third_method <- data.frame(var_a, var_b, var_c)
third_method %>% sapply(class)
#    var_a     var_b     var_c 
# "factor" "numeric"  "factor" 

尝试4-手动声明数据框的每一列,其名称和数据类型

此返回所希望的输出,但是,它并不口若悬河,而不是采取一个大量的手工编码大量矢量的,并且是容易出现用户错误,因为用户必须指定的数据类型手动为每列

fourth_method <- data.frame("var_a"=as.character(var_a), "var_b"=as.numeric(var_b), "var_c"=as.factor(var_c), stringsAsFactors = FALSE)
fourth_method %>% sapply(class)

#      var_a       var_b       var_c 
#"character"   "numeric"    "factor" 

注意:thisthisthis解决方案不合适,因为它们会导致数据类型丢失

另请注意:此问题中的向量未如问题中所提及的那样命名为向量

在这一点上,我想法不足,不确定下一步该怎么做?

G5W

可以与搭配使用data.frame您只需要添加参数stringsAsFactors=FALSE

df = data.frame(var_a, var_b, var_c, stringsAsFactors = FALSE)
sapply(df, class)
      var_a       var_b       var_c 
"character"   "numeric"    "factor" 

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

将混合数据帧(字符、向量、整数)中的小写字母转换为大写字母,同时保留 R 中的数据类型?

R:将任意串联的变量名称和值的向量转换为单个数据帧

如何将 1 列数据框转换为向量,而列名称仍为 R 中的向量名称

在r中,将数据帧的列转换为不带“ unlist”且具有动态名称的向量

如何将向量绑定到python中的数据帧并将向量名称保留为新列的名称?

将向量列表转换为R中的数据帧

R将字符向量组合到数据帧中,向量名称作为行ID

一种将不同长度的命名向量合并到R中的数据帧中的快速方法(将名称信息保留为列名称)

将命名向量转换为列表,但保留向量名称

Python Pandas将两个数据集的两列转换为一个保留列名称和数据类型

使用存储在 R 中的向量中的名称存储数据帧

结合名称向量中的数据帧

将两列从数据帧转换为向量 R

如何通过R中的名称将向量转换为矩阵?

将所有向量合并到以R中的特定名称开头的数据帧

R将具有重复名称的命名向量转换为数据框

在R中拆分列名称并将数据从宽格式转换为长格式

将向量转换为R中具有两列的数据帧

将向量列表列表转换为 R 中的数据帧

将数据帧的行转换为R中的简单向量

将字符串向量转换为R中的数据帧

将向量长度不同的列表转换为R中的数据帧

给定列名称的向量,将值添加到数据帧的每一行

R将数据转换为向量

使用ConvertTo-Json转换为JSON时保留数据类型名称

R:使用向量为sapply馈送数据帧名称

使用for循环并以R中的不同名称保存将LIst转换为数据帧

如何从文件中读取数据,然后将数据转换为int并将其存储在向量中

R中是否有一些东西可以自动将列(数据帧或表)转换为其原始向量类型