【发布时间】:2015-08-05 06:11:09
【问题描述】:
我的文件夹目录中有一个数据框列表,我想对其进行处理以进行分析。我首先使用 lapply 函数内部来阅读它们,然后我想处理它的列并通过分组对其行进行排序。因此,大多数时候我需要结合 dplyr 和 lapply 函数来更快地处理我的数据。
我浏览了网络并查阅了一些书籍,但大多数示例都很简单,并未涵盖这两个功能的组合。
这是我正在使用的示例代码:
files <- mixedsort(dir(pattern = "*.txt",full.names = FALSE)) # to read data
data <- lapply(files,function(x){
tmp <- read.table(file=x, fill=T, sep = "\t", dec=".", header=F,stringsAsFactors=F)
df <- tmp [!grepl(c("AC"),tmp $V1),]
new.df <- select(df, V1:V26)
new.df <- apply(new.df, function(x){ x[11:26] <- x[11:26]/10000;x })
我收到以下错误:
match.fun(FUN) 中的错误:缺少参数“FUN”,没有默认值
这是看起来像我的数据的可重现示例。假设我想处理我的dat 的第二列和第三列,并按let 列分组。当我尝试将上面的data 代码中的fun 命令放在下面时,我得到了错误。任何指导将不胜感激。
dat <- lapply(1:3, function(x)data.frame(let=sample(letters,4),a=sort(runif(20,0,10000),decreasing=TRUE), b=sort(runif(20,0,10000),decreasing=TRUE), c=rnorm(20),d=rnorm(20)))
fun <- lapply(dat, function(x){x[2:3] <-x[2:3] /10000; x})
【问题讨论】:
-
apply函数的格式为apply(X, MARGIN, FUN, ...),其中MARGIN为1(行)或2(列)。您在apply函数中缺少margin部分。 -
@Jaap 好的,我将
2放在new.df之后,但出现错误“x[11:26]/10000 中的错误:二进制运算符的非数字参数”