将字符名称的变量转换为数据帧。

41 浏览
0 Comments

将字符名称的变量转换为数据帧。

  1. 创建一个空的数据框:

y <- data.frame()

  1. 将一个字符串向量 x 分配为 y 的列名:

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

结果:

Error in colnames<-(*tmp*, value = c("name", "age", "gender")) :

'names' attribute [3] must be the same length as the vector [0]

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

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

不是一个高效的给列命名的方式。我该如何解决这个问题?

0
0 Comments

问题的出现原因是用户想要将角色名的变量整理成一个数据框,并且想要一次性完成这个操作。用户尝试了几种方法,但是没有得到想要的结果。

为了解决这个问题,用户可以使用下面的方法之一:

方法一:

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", "age", "gender"))
#[1] name   age    gender
#<0 rows> (or 0-length row.names)

方法三:

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

另外,用户还提到想要添加新列(类型为字符)并且列名为`new_col_names <- c("new1", "new2")`。用户尝试了`df[, new_col_names ] <- NULL`,但没有成功。

如果用户有一个数据框`df`,可以尝试以下方法来添加新列:

df[new_col_names] <- NA_character_

以上是解决问题的方法,用户可以根据自己的需求选择合适的方法来完成操作。

0