R - 如何使用列标题变量将列添加到数据框

R - How to add Column to dataframe with a variable for column title

我尝试在 R 中编写一个脚本,它应该通过一个数据框来查找具有 formal/nominal 个条目的列。找到这样一个列,它应该提取一个向量中的所有输入值,并为每个值添加一个具有二进制数据 (0,1) 的列。

问题:使用变量 data$lev[z] <- data[,x]==lev[z] 将名称签名到列无效。 lev[] 是一个带有名称的向量,z 是一个循环的索引。

如果有人能帮助我,那就太好了。

提前致谢。 干杯

我认为你唯一的问题是你的最后一行应该有 sample[,lev[z]] 而不是 sample$lev[z]。正如您目前拥有的那样(即 sample$lev[z]),您告诉 R 将向量 (TRUE, FALSE, FALSE) 分配给第 z 行中 samplelev 列。在此示例中,您试图将 3 件东西放在一个地方。因此你的警告信息:number of items to replace is not a multiple of replacement length.

工作代码为:

letter <- c("a","b","c")
id <- c(1,2,3)
sample <- data.frame(id,letter)
y <- NCOL(sample)
x <- 0
while ( x < y){ 
  x <- x+1
  test01 <- is.factor(sample[,x])
  if(test01 == TRUE ){ 
    lev <- levels(sample[,x])
    q <- length(lev)
    z <- 0
    while (z < q){ 
      z <- z+1
      sample[,lev[z]] <- sample[,x]==lev[z]
    } 
  } 
}