【发布时间】:2021-04-27 04:16:52
【问题描述】:
我正在尝试将值的原子向量分配给由 df 行组成的原子向量:
library(dplyr)
df %>%
mutate(new_col= assign(c('A1', 'A2', 'A3', 'A4', 'A5'), c(10,25,35,45,50)))
但是这段代码会输出下一个错误:
错误:
mutate()输入new_col有问题。 x 输入new_col无法回收到大小 8。 i 输入new_col是assign(c("A1", "A2", "A3", "A4", "A5"), c(10, 25, 35, 45, 50))。 i 输入new_col的大小必须为 8 或 1,而不是 5。 运行rlang::last_error()以查看错误发生的位置。 Además:警告信息: 1:mutate()输入new_col有问题。 i sólo el prime elemento es usado como nombre de variable i 输入new_col是assign(c("A1", "A2", "A3", "A4", "A5"), c(10, 25, 35, 45, 50))。 2:在分配(c(“A1”,“A2”,“A3”,“A4”,“A5”),c(10,25,35,45,50)): sólo el prime elemento es usado como nombre de variable
预期的输出可能如下所示:
# A1 10
# A1 10
# A2 25
# A3 35
# A4 45
# A4 45
# A5 50
# A5 50
数据
df <- data.frame(legend=c('A1','A1' ,'A2', 'A3', 'A4', 'A4', 'A5', 'A5'))
如何调整管道?
【问题讨论】:
-
创建一个索引到原始df行的新列
-
如果您需要创建列,那么最好有一个命名向量或带有键/值数据的小标题并加入
keydat <- tibble(legend = c('A1', 'A2', 'A3', 'A4', 'A5'), value = c(10, 25, 35, 45, 50)); > left_join(df, keydat) -
df$new <- c(10, 25, 35, 45, 50)[match(df$legend, c('A1', 'A2', 'A3', 'A4', 'A5'))]