【发布时间】:2015-04-23 04:41:29
【问题描述】:
我之前没有看到有人发布过由于使用dplyr 和sapply 而导致的此错误,所以我想我想问问是否有人知道为什么会发生这种情况。这本身不是一个主要问题,因为解决方法非常简单,但它可能会让你们中的一些人免于想知道到底发生了什么的麻烦。样本数据取自here,我对同一篇文章中jbaums 给出的代码进行了修改。
样本数据
mydata <- data.frame(matrix(rlnorm(30*10,meanlog=0,sdlog=1), nrow=30))
colnames(mydata) <- c("categ", "var1","var2", "var3","var4", "var5", "var6", "var7", "var8", "var9")
mydata$var2 <- mydata$var2*5
mydata$categ <- sample(1:2)
mydata
用于制作多个箱线图的循环函数
sapply(seq_along(mydata)[-1], function(i) {
y <- mydata[, i]
names <- colnames(mydata)[i]
plot(factor(mydata$categ), log(y + 1), main=names, ylab="foo",outpch=NA, las=1)
})
效果很好。
现在使用tbl_df()后出现此错误
require(dplyr)
mydata2 <- tbl_df(mydata)
sapply(seq_along(mydata2)[-1], function(i) {
y <- mydata2[, i]
names <- colnames(mydata2)[i]
plot(factor(mydata2$categ), log(y + 1), main=names, ylab="foo",outpch=NA, las=1)
})
Error in xy.coords(x, y, xlabel, ylabel, log) :
'x' and 'y' lengths differ
解决方法非常简单,因为它只是:
mydata2 <- data.frame(mydata2)
## OR
lapply(...)
然后代码再次流畅运行。
知道为什么会发生这种情况吗?我认为这更像是sapply 与lapply 的问题,但我觉得这很有趣。
干杯,
哦。
【问题讨论】:
-
这个问题已经得到解答还是还有更多需要解决的问题?如果您有其他解释,请随时发布您自己的答案(如果建议不充分)并接受,以便所有人都能受益。
标签: r apply dplyr lapply sapply