在R中:如何将CSV文件的列名称作为列表获取,将值作为列表列表

时间:2015-06-10 23:24:00

标签: r csv

所以我从我的csv文件中得到一个数据帧:

dataFrame = read.csv(fileName, header = TRUE)

我试图使用

获取列名(第一行)
columnNames = colnames(dataFrame)

我需要在列表列表中获取数据框中的值,其中每个子列表都是没有任何标题的值列表。

e.g。

Values: [
    [
      "0",
      "0",
      "value",
      "value",
      "0",
      "0",
      "0",
      "0",
      "0",
      "0",
      "0",
      "0",
      "0"
    ],
    [
      "0",
      "0",
      "value",
      "value",
      "0",
      "0",
      "0",
      "0",
      "0",
      "0",
      "0",
      "0",
      "0"
    ]
  ]

有没有办法做到这一点?

我试过这个

for(i in 1:nrow(dataFrame)) {
    temp = list(dataFrame[i])
    values <- c(values, temp)
}

但我会随每个条目一起获取每个列名称。

2 个答案:

答案 0 :(得分:1)

认为这是你正在尝试做的事情,鉴于你上面关于想要行的评论:

unname(lapply(split(mtcars,1:nrow(mtcars)),function(x) {unname(as.list(x))}))

这使用内置数据集mtcars

答案 1 :(得分:-1)

假设您的数据框仅包含相同类型的列,例如只有数字,你可以先强制转换为矩阵,然后将列名(和行名称,如果有的话)设置为NULL。以下是使用内置mtcars数据帧的示例:

foo <- mtcars
foo <- as.matrix(foo)
rownames(foo) <- NULL
colnames(foo) <- NULL

然后,您可以使用类似于您所写的循环转换为列表,或者更多&#34;惯用&#34; R使用lapply:

foo <- lapply(seq_len(ncol(foo)), function(col) foo[,col])