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

时间:2012-06-06 20:13:29

标签: r dataframe posixct

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

myDF <- data.frame(A=letters[1:5], B=letters[6:10], C=LETTERS[26:22], stringsAsFactors=FALSE)

我想抓住字母a,g,c,W和V.

如果这是matrix,则很容易解决。

myDF[cbind(c(1, 2, 3, 4, 5), c(1, 2, 1, 3, 3))]

但是我必须将数据存储在data.frame中,因为数据通常是POSIXlt而我找不到将data.frame转换为matrix的方法}}

有没有人有一个很好的方法来做这个而不逐行循环?我有许多失败的尝试,我很乐意分享。

1 个答案:

答案 0 :(得分:1)

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

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