Если мы Column
в качестве строки, то используем [[
и также возвращаем набор данных. Также может быть лучше иметь идентификатор набора данных в качестве другого аргумента
Fix_Entries <- function(df, Column){
df[[Column]][which(df[[Column]] == "-")] <- "Y"
df
}
df1 <- Fix_Entries(df1, "Col1")
df1
# Col1 Col2
#1 N 2.2088619
#2 Hello 1.9015173
#3 A -0.0708413
#4 B -0.2253454
#5 Y -0.2403291
#6 C 0.8615449
#7 Y -0.5985272
Этого также можно добиться с помощью tidyverse
, взяв имя столбца без кавычек в качестве ввода
Fix_Entries_tidy <- function(df, Column) {
Column <- enquo(Column)
df %>%
mutate(!! Column := replace(!! Column, !!Column == "-", "Y"))
}
Fix_Entries_tidy(df1, Col1)
# Col1 Col2
#1 N 2.2088619
#2 Hello 1.9015173
#3 A -0.0708413
#4 B -0.2253454
#5 Y -0.2403291
#6 C 0.8615449
#7 Y -0.5985272
данные
set.seed(24)
df1 <- data.frame(Col1 = c("N", "Hello", "A", "B", "-", "C", "-"),
Col2 = rnorm(7), stringsAsFactors = FALSE)