为data.frame的每一行获取不同的列

为data.frame的每一行获取不同的列,r,dataframe,posixct,R,Dataframe,Posixct,我有一个data.frame,它有任意数量的列,我需要一种方法从每行中获取不同的列(只有一列)。例如,如果我有一个像这样的data.frame: myDF <- data.frame(A=letters[1:5], B=letters[6:10], C=LETTERS[26:22], stringsAsFactors=FALSE) 但是我必须将数据存储在data.frame中,因为数据通常是POSIXlt,并且我还没有找到将数据.frame转换为矩阵的方法 有没有人有一个不逐行循环的好方

我有一个
data.frame
,它有任意数量的列,我需要一种方法从每行中获取不同的列(只有一列)。例如,如果我有一个像这样的
data.frame

myDF <- data.frame(A=letters[1:5], B=letters[6:10], C=LETTERS[26:22], stringsAsFactors=FALSE)
但是我必须将数据存储在
data.frame
中,因为数据通常是
POSIXlt
,并且我还没有找到将
数据.frame
转换为
矩阵的方法


有没有人有一个不逐行循环的好方法?我有很多失败的尝试,我很乐意与大家分享。

这是不善言辞的,但它适用于特别困难的日期:

vect <- do.call(c, args=as.list(myDF))
vect[(1:NROW(myDF)) + NROW(myDF) * (c(1, 2, 1, 3, 3) - 1)]

vect您使用的是哪个版本的R?您的代码运行良好,因为至少是R-2.14.2。此外,不久之后,(根据其新闻文件,R-devel中已经出现),“现在支持通过两列数字索引对数据帧进行矩阵索引,以进行替换和提取。”R 2.15.0。您是对的,代码的工作原理与示例相同,但当数据为
POSIXlt
时就不一样了。也许我应该编辑这个问题,使数据成为
POSIXlt
。在做任何事情之前,POSIXlt应该转换为POSIXct。-1感谢发布一个没有说明问题的示例。@DWin基于此,似乎
POSIXct
会让我的生活更轻松。不幸的是,我没有切换到
POSIXct
的选项,必须使用任何类型的
POSIX
Date
或发送给我的任何东西。
vect <- do.call(c, args=as.list(myDF))
vect[(1:NROW(myDF)) + NROW(myDF) * (c(1, 2, 1, 3, 3) - 1)]