2

我有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))]

但是我必须将数据存储在 a 中,data.frame因为数据通常是 aPOSIXlt而我还​​没有找到将其中的 a 转换为 adata.frame的方法matrix

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

4

1 回答 1

1

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

vect <- do.call(c, args=as.list(myDF))
vect[(1:NROW(myDF)) + NROW(myDF) * (c(1, 2, 1, 3, 3) - 1)]
于 2012-06-06T21:25:54.327 回答