我正在 R 中工作并使用以下数据:
data <- data.frame(
id = c(1, 2, 1, 2, 1, 2),
city = c("London", "London", "Lisbon", "Lisbon", "Paris", "Paris"),
name = c("jane", "janey", "jane", "janee", "lauran", "laura"))
id | 城市 | 名字 |
---|---|---|
1 | 伦敦 | 简 |
2 | 伦敦 | 珍妮 |
1 | 里斯本 | 简 |
2 | 里斯本 | 珍妮 |
1 | 巴黎 | 劳兰 |
2 | 巴黎 | 劳拉 |
我的函数对数据进行透视(第 1 节),但我也希望它继续对透视表进行 stringdist(第 2 节)
pivot_and_string_dist <- function(input_data,
measure_1,
string_dist_method){
# section 1 - works fine
# see (1) below for output after this section
data_pivoted <- input_data %>%
pivot_wider(names_from = id,
names_glue = "{.value}_{id}",
values_from = c({{measure_1}}))
# section 2 - does not work
# see (2) below for required output after this section
data_string_dist <- data_pivoted %>%
mutate(string_dist_1 =
stringdist((paste0(!!{{measure_1}}, "_1")),
(paste0(!!{{measure_1}}, "_2")),
method = string_dist_method,
p = 0.1))
return(data_string_dist)
}
(1) 函数第 1 部分之后的输出 - 工作正常
data <- data.frame(
city = c(London, Lisbon, Paris),
name_1 = c("jane", "jane", "lauran")
name_2 = c("janey", "janee", "laura"))
城市 | 名称_1 | 名称_2 |
---|---|---|
伦敦 | 简 | 珍妮 |
里斯本 | 简 | 珍妮 |
巴黎 | 劳兰 | 劳拉 |
(2) 函数第 2 部分之后所需的输出 - 不起作用
x <- pivot_and_string_dist(input_data = data,
measure_1 = name,
string_dist_method = "jw")
Error in quos(..., .ignore_empty = "all") : object 'name' not found
(注意:我在这里显示虚拟 stringdist 数字!)
x:
城市 | 名称_1 | 名称_2 | 弦距 |
---|---|---|---|
伦敦 | 简 | 珍妮 | 0.4 |
里斯本 | 简 | 珍妮 | 0.5 |
巴黎 | 劳兰 | 劳拉 | 0.6 |
谢谢
您所需要的只是引用
name
。
x <- pivot_and_string_dist(input_data = data,
measure_1 = "name",
string_dist_method = "jw")