list.list中列表中的data.frame,奇怪的列名

时间:2013-08-05 15:34:30

标签: r list dataframe columnname

我正在尝试从“列表中的列表”

创建一个data.frame
l <- list(c("sam1", "GSM6683", "GSM6684", "GSM6687", "GSM6688"), c("sam2", 
"GSM6681", "GSM6682", "GSM6685", "GSM6686"))
df <- data.frame(l)

1)我得到一个带有奇怪列名的date.frame,我该如何避免它? 2)我想从列表

中的内部列表的第一个元素中获取列名 像这样:

column names: sam1, sam2
row1 GSM6683 GSM6681
row2 GSM6684 GSM6682
row3 GSM6687 GSM6685
row4 GSM6688 GSM6686

2 个答案:

答案 0 :(得分:4)

您几乎就在那里,因为您希望sam1sam2成为列名,您不需要将它们列为列表的一部分,并指定它们是列名。

>l <- list(c("GSM6683", "GSM6684", "GSM6687", "GSM6688"), c( 
    "GSM6681", "GSM6682", "GSM6685", "GSM6686"))
>df <- data.frame(l)
>colnames(df)<-c("sam1", "sam2")

答案 1 :(得分:2)

如果您从示例中的数据结构开始,请执行以下操作:

df <- data.frame(lapply(l, function(x) x[-1]))
names(df) <- lapply(l, function(x) x[1])

如果您可以选择如何构建数据结构,请执行R_Newbie在答案中所说的内容。