2017-02-15 24 views
0

我正在嘗試在data.frame上使用apply和用戶定義的函數。在函數內部,我想使用列名(對於圖的標題),但似乎應用剝離列名並只傳遞一個向量。 MWE:通過應用函數傳遞的列名R

trialData <- data.frame('a' = rnorm(100), 
         'b' = rnorm(100), 
         'c' = rnorm(100)) 

someData <- function(dataInput){ 
    return(colnames(dataInput)) 
} 

dataOutput <- apply(trialData, 2, someData) 

print(dataOutput) 

回報NULL。有什麼方法可以訪問函數內的列名稱嗎?

+0

* apply函數不允許您訪問正在循環的數據的「屬性」。有一些迂迴的方法可以從* apply中訪問colname,但是我的問題是你想用這個代碼實現什麼?根據你的帖子,不需要「申請」。 – emilliman5

+0

我在我的實際功能中做了很多事情,有幾件事情需要列的名稱。例如,我生成了一些數字,我想在標題中使用該名稱。我想如果我不能訪問屬性,我需要重寫函數,以便它接受一個字符串,並調用應用程序,以便它接受兩個參數。 – Lespied

+0

首先,我考慮用lapply遍歷你的列。其次,不是將數據幀傳遞給lapply,而是傳遞列名稱,然後傳遞數據幀的子集以用於您的預期操作。 – emilliman5

回答

0

感謝評論者,我在下面給出了我想要的結果。

trialData <- data.frame('a' = rnorm(100), 
         'b' = rnorm(100), 
         'c' = rnorm(100)) 

someData <- function(dataInput){ 
    # lots of code here 
    return(
    dataName = colnames(dataInput) 
) 
} 

dataOutput <- lapply(colnames(trialData), function(x){someData(trialData[x])}) 

print(dataOutput)