r语言 - 如何在'by'输入中使用 paste() 连接 data.frame?



如何实现此功能?

test <- data.frame(a = 1:5,
b = 6:10)
test2 <- data.frame(c = 11:15,
bb = 6:10)
test %>% left_join(test2, by = c(paste0('b', paste(rep('b', 1), collapse = '')) = 'b'))

目前我收到错误:Error: unexpected '=' in "test %>% left_join(test2, by = c(paste0('b', paste(rep('b', j), collapse = '')) ="

rep()中,函数当前为1,但其想法是稍后将其更改为索引,以便对不同的输入使用相同的代码。

如果对by语句使用a = b语法,则需要将其包含在c()中,例如by = c(a = b),而不是by = a = b中,这将生成语法错误。

在您的情况下,我还会将复杂的paste0分配给一个变量,这样代码就更可读了。

这应该有效:

test <- data.frame(a = 1:5,
b = 6:10)
test2 <- data.frame(c = 11:15,
bb = 6:10)
col_to_join = c(paste0('b', paste(rep('b', 1), collapse = '')))
test %>% left_join(test2, by = c("b" = col_to_join))

您有一些问题,但我认为这段代码可以满足您的要求。


test %>% left_join(test2, 
by = c("b" = paste0('b', paste(rep('b', 1), collapse = ''))))

首先,将列名按正确的顺序排列。其次,这些名称需要在一个向量中。第三,粘贴物周围的c()是不需要的。

最新更新