【发布时间】:2019-03-13 04:35:33
【问题描述】:
我有四个函数,clean、clean2、cleanFun 和 trim。目前我将这些功能应用于一列,就像这样。
library(tidyverse)
library(data.table)
py17$CE.Finding.Description <- clean(py17$CE.Finding.Description)
py17$CE.Finding.Description <- clean2(py17$CE.Finding.Description)
py17$CE.Finding.Description <- cleanFun(py17$CE.Finding.Description)
py17$CE.Finding.Description <- trim(py17$CE.Finding.Description)
这个过程可以解决问题,但我必须多次复制和粘贴,我最终希望将其扩展到多列。
现在,我想节省时间并添加一个应用函数,但我不确定如何创建该应用函数。我试过创建这个。
maxclean <- function(cleaner) {
c(clean(cleaner), clean2(cleaner), cleanFun(cleaner), trim(cleaner))
}
py17$CE.Finding.Description <- sapply(py17$CE.Finding.Description, maxclean)
尝试后我得到了
Error in `$<-.data.frame`(`*tmp*`, CE.Finding.Description, value = c(NA, :
replacement has 4 rows, data has 4318
我没有得到任何错误这样做很长的路要走。我哪里错了?
【问题讨论】:
-
为什么不将功能聚合到一个函数中?
-
为什么在你的问题中包含
library(data.table)和library(tidyverse),但显然两者都不使用? -
@Gregor 我想我会使用它以防万一有人知道使用这两个库的更快方法。下次我一定不会再提到图书馆了,谢谢。
-
在这种情况下,我只需输入“使用
data.table或 tidyverse 对解决方案开放”。这样可以很好地传达信息,而不会暗示您正在(或认为您正在)使用它们
标签: r function dataframe sapply