Create empty data frame with column names by assigning a string vector? [duplicate]
- Create an empty data frame:
y <- data.frame()
- 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 these 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"))))