在R中使用动态分配的列名创建data.frame

Rob*_*yth 12 r dataframe

我需要创建一个data.frame,它将通过for循环的结果一次填充一行.它有45列:其中五列的名称是静态的,但其余部分在运行时从外部CSV文件读入(作为向量).我正在寻找一些类似的东西

goalsMenu <- read.csv("Phase 1 goalsmenu.csv", header = TRUE)
colHeads <- c("analysis","patient","date",as.vector(goalsMenu$Name),"CR")
output <- data.frame(colHeads)
Run Code Online (Sandbox Code Playgroud)

但是这会创建一个列名为colHeads的单列data.frame.

colHeads <- list("analysis","patient","date",as.vector(goalsMenu$Name),"CR")
Run Code Online (Sandbox Code Playgroud)

似乎是朝着正确方向迈出的一步,但我需要"压扁"它以创建所需的data.frame结构

你能告诉我吗?

Chr*_*h_J 8

这有帮助吗?

goalsMenu <- paste("Name", 1:40, sep="")
output <- as.data.frame(matrix(rep(0, 5 + length(goalsMenu)), nrow=1))
names(output) <- c("analysis", "patient", "date", goalsMenu, "CR1", "CR2")
Run Code Online (Sandbox Code Playgroud)

基本上,我首先创建一个包含output列数的data.frame ,然后在下一步中命名这些列.但是,请注意mdsumner的评论!这样,所有列都是类numeric.您可以稍后处理:更改data.frame中的列类


All*_*rdt 5

如果你可以先用(某些)数据填充框架,那么你可以只分配名称().否则,您必须先列出该列表(然后再转换为data.frame):

col.names <- LETTERS[1:10]  # Example column names
data <- vector("list", length(col.names))
names(data) <- col.names
print(str(data))            # Inspect the structure
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助