R 中的 mutate 关键字和函数的问题
Problem with mutate keyword and functions in R
我在使用 MUTATE 时遇到问题,请检查下一个代码块。
output1 <- mytibble %>%
mutate(newfield = FND(mytibble$ndoc))
output1
其中 FND 函数是应用于大文件 (5GB) 的 FILTER:
FND <- function(n){
result <- LARGETIBBLE %>% filter(LARGETIBBLE$id == n)
return(paste(unique(result$somefield),collapse=" "))
}
我想对 output1
tibble 的每一行执行 FND 函数,但它只执行一次。
FND(mytibble$ndoc)
更适合数据框。当您在小标题上使用 mutate
等函数时,无需指定小标题的名称,只需指定列的名称即可。符号 %>%
已经确保只使用小标题中的数据。因此,您的示例将是:
output1 <- mytibble %>%
mutate(newfield = FND(ndoc))
FND <- function(n){
result <- LARGETIBBLE %>% filter(id == n)
return(paste(unique(result$somefield),collapse=" "))
}
这在理论上是可行的,但是我不知道您的功能 FND
是否有效,也许可以尝试一下,如果不能,请给出一些实际的数据示例以及您想要实现的目标。
永远不要在 dplyr
管道中使用 $
,它们很少被使用。您可以将 FND
函数更改为:
library(dplyr)
FND <- function(n){
LARGETIBBLE %>% filter(id == n) %>% pull(somefield) %>%
unique %>% paste(collapse = " ")
}
现在将此函数应用于 mytibble
中的每个 ndoc
值。
mytibble %>% mutate(newfield = purrr::map_chr(ndoc, FND))
您也可以使用 sapply
:
mytibble$newfield <- sapply(mytibble$ndoc, FND)
我在使用 MUTATE 时遇到问题,请检查下一个代码块。
output1 <- mytibble %>%
mutate(newfield = FND(mytibble$ndoc))
output1
其中 FND 函数是应用于大文件 (5GB) 的 FILTER:
FND <- function(n){
result <- LARGETIBBLE %>% filter(LARGETIBBLE$id == n)
return(paste(unique(result$somefield),collapse=" "))
}
我想对 output1
tibble 的每一行执行 FND 函数,但它只执行一次。
FND(mytibble$ndoc)
更适合数据框。当您在小标题上使用 mutate
等函数时,无需指定小标题的名称,只需指定列的名称即可。符号 %>%
已经确保只使用小标题中的数据。因此,您的示例将是:
output1 <- mytibble %>%
mutate(newfield = FND(ndoc))
FND <- function(n){
result <- LARGETIBBLE %>% filter(id == n)
return(paste(unique(result$somefield),collapse=" "))
}
这在理论上是可行的,但是我不知道您的功能 FND
是否有效,也许可以尝试一下,如果不能,请给出一些实际的数据示例以及您想要实现的目标。
永远不要在 dplyr
管道中使用 $
,它们很少被使用。您可以将 FND
函数更改为:
library(dplyr)
FND <- function(n){
LARGETIBBLE %>% filter(id == n) %>% pull(somefield) %>%
unique %>% paste(collapse = " ")
}
现在将此函数应用于 mytibble
中的每个 ndoc
值。
mytibble %>% mutate(newfield = purrr::map_chr(ndoc, FND))
您也可以使用 sapply
:
mytibble$newfield <- sapply(mytibble$ndoc, FND)