2014-05-08 40 views
-1

我是新來的R,並試圖學習一個簡單的方法來完成我的任務:我有一個15列的數據框。列名爲AB,CD,...,O,具有112行。迭代地從數據幀中選擇一個列序列

我有另一個向量,其中包含要在每次迭代中讀取的列序列。 如:

x <- c("D", "E", "G", "H", "A", "B", "F") 

我想要做的是:

  1. 對於第一次迭代讀取第一列(即D)從主數據幀,然後只對列進行了手術。
  2. 在第二次迭代中使用兩列(DE)並執行我的操作。
  3. 在第3次迭代只讀列DEG和執行我的操作

我怎樣才能做到在R裏面?

回答

1
DF <- as.data.frame(matrix(1:27, ncol=9)) 
names(DF) <- LETTERS[seq_along(DF)] 

set.seed(42) 
x <- sample(names(DF)) 

sapply(seq_along(x), function(i) { 
    sum(DF[, x[sequence(i)], drop=FALSE]) 
}) 
#[1] 78 147 171 213 246 306 357 363 378 
+1

我可能會在子集調用中放一個',drop = FALSE',因爲有單列和多列選擇。 'sum'不在乎,但有些操作可能會。 –

+0

@BrianDiggs同意。 – Roland

相關問題