通过分配字符串向量使用列名创建空数据框? [英] Create empty data frame with column names by assigning a string vector?

查看:141
本文介绍了通过分配字符串向量使用列名创建空数据框?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述


  1. 创建一个空数据框:



  y < ;-data.frame()




  1. 分配x ,一个字符串向量,以y作为其列名:



  x<-c( 姓名,年龄,性别)
姓氏(y)<-x

结果:

 `colnames< -`(`* tmp *`,value = c( name , age, gender)):
'names'属性[3]的长度必须与向量[0]


实际上,x的长度是动态的,所以

  y <- .frame(名称=字符(),年龄=数字(),性别=逻辑())

这不是命名列的有效方法。我该如何解决这个问题?

解决方案

  df<-data.frame(matrix(ncol = 3,nrow = 0))
x<-c( name, age, gender)
colnames(df) <-x






要在单线

  setNames(data.frame(matrix(ncol = 3,nrow = 0)),c( name ,年龄,性别))

#[1]姓名年龄性别
#< 0行> (或长度为0的row.names)

Or

  data.frame(matrix(ncol = 3,nrow = 0,dimnames = list(NULL,c( name, age, gender)))) 


  1. Create an empty data frame:

y <- data.frame()

  1. Assign x, a string vector, to y as its column names:

    x <- c("name", "age", "gender")
    colnames(y) <- x

Result:

Error in `colnames<-`(`*tmp*`, value = c("name", "age", "gender")) : 
  'names' attribute [3] must be the same length as the vector [0]

Actually, the x length is dynamic, so

y <- data.frame(name=character(), age=numeric(), gender=logical())

is not an efficient way to name the column. How can I solve the problem?

解决方案

How about,

df <- data.frame(matrix(ncol = 3, nrow = 0))
x <- c("name", "age", "gender")
colnames(df) <- x


To do all this operations in one-liner

setNames(data.frame(matrix(ncol = 3, nrow = 0)), c("name", "age", "gender"))

#[1] name   age    gender
#<0 rows> (or 0-length row.names)

Or

data.frame(matrix(ncol=3,nrow=0, dimnames=list(NULL, c("name", "age", "gender"))))

这篇关于通过分配字符串向量使用列名创建空数据框?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆