【发布时间】:2017-02-15 13:04:14
【问题描述】:
我正在尝试在 data.frame 上使用 apply 和用户定义的函数。在函数内部,我想使用列名(作为绘图的标题),但 apply 似乎去掉了列名并只传递了一个向量。 MWE:
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。有什么方法可以访问函数内部的列名吗?
【问题讨论】:
-
*apply 函数不允许您访问正在循环的数据的“属性”。有一些迂回的方法可以从 *apply 中访问 colnames,但我的问题是你想用这段代码实现什么?根据您的帖子,无需致电
apply。 -
我在我的实际函数中做了很多事情,有些事情需要列的名称。例如,我生成了一些数字,我想在标题中使用名称。我想如果我不能访问属性,我需要重写函数以便它接受一个字符串,并调用 apply 以便它接受两个参数。
-
首先,我考虑使用 lapply 来遍历您的列。其次,不要将数据框传递给 lapply,而是传递列名,然后从数据框中传递子集以进行您的预期操作。
-
lapply(colnames(trialData), function(x) myfun(trialData[, x] ) 将返回一个带有绘图的列表对象。然后您可以遍历列表并调用 print 来绘制图形跨度>