使用不同数据类型从复杂列表中提取值

时间:2015-12-18 21:41:35

标签: r list

我有一个嵌套列表,其元素是不同的对象 - 让我们说字符串(字符),整数,数字和数据帧:

mylist <- list(letters = as.character("Hello world"), 
               numbers = as.numeric(1.254),
               table = data.frame (id = letters[1:5], value = 1:5))

我想将此列表转换为关系data.tabledata.frame但我的R不断抛出异常。

为了让我更难,我有一个列表biglist,其中每个元素都是上面列出的列表之一。目前,这就是我想要实现的目标:

# I start with initializing a data.table/frame result.table 
# which should then hold all the other values.
result.table <- data.table(letters = character(length(biglist), 
                           numbers = numeric(length(biglist), ... ) # and so on


for (i in 1:length(mylist)) {
  result.table[i]$col1 <- mylist[[i]]$letters
  result.table[i]$col2 <- mylist[[i]]$numbers
  result.table[i]$col3 <- mylist[[i]]$table$value[1]
  result.table[i]$col4 <- mylist[[i]]$table$value[2]
}

return (result.table)

我的R一直告诉我,由于列数量和数据类型的不同,它们似乎都是字符(甚至是数字......)。是否有关于如何更有效且无错误地从mylist访问值的想法?

1 个答案:

答案 0 :(得分:3)

试试这个:

mylist<-as.data.frame(mylist)

#       letters numbers table.id table.value
# 1 Hello world   1.254        a           1
# 2 Hello world   1.254        b           2
# 3 Hello world   1.254        c           3
# 4 Hello world   1.254        d           4
# 5 Hello world   1.254        e           5