将unlist输出与列名称

时间:2015-05-17 13:32:08

标签: r

以下是示例数据:

main.data <- c("id","num","open","close","char","gene","valid")
data.step.1 <- list(id="12",num="00",open="01-01-2015",char="yes",gene="1234",valid="NA")
match.step.1 <- unlist(data.step.1)

main.data是所有可能列数据的列名。

我有一个循环,逐步传输数据,可能缺少列(列表名称)。

我想将每个步骤(data.step.n)与主列名称(main.data)相匹配。

期望的输出:

id      num         open      close     char         gene        valid 
"12"    "00"    "01-01-2015"    ""      "yes"       "1234"         "NA" 

如何取消列出数据并将其与名称进行匹配,以便在缺少条目的情况下使用close填充空字符串。

1 个答案:

答案 0 :(得分:2)

尝试

 v1 <- setNames(rep('', length(main.data)), main.data)
 v1[main.data %in% names(match.step.1)] <- match.step.1

或使用match

  v1[match(names(match.step.1), main.data)] <- match.step.1

或者只使用[

  v2 <- setNames(match.step.1[main.data], main.data)
  v2[is.na(v2)] <- ''