我有一个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
的方法}}
有没有人有一个很好的方法来做这个而不逐行循环?我有许多失败的尝试,我很乐意分享。
答案 0 :(得分:1)
这是不善言辞的,但它适用于特别困难的日期:
vect <- do.call(c, args=as.list(myDF))
vect[(1:NROW(myDF)) + NROW(myDF) * (c(1, 2, 1, 3, 3) - 1)]