tidyr spread函数如何将变量作为选择列

tidyr spread函数如何将变量作为选择列,r,tidyr,R,Tidyr,tidyr的spread函数只接受不带引号的列名。有没有办法传入包含列名的变量 例如 使用匹配函数求解,该函数给出所需的列位置 dummy.data %>% gather(key, value, match(var, names(.))) 但同样的方法不适用于扩散函数 dummy.data %>% spread(a, match(var, names(.))) Error: Invalid column specification 收集和传播功能采用不同的列规格。“聚集”采用列索

tidyr的spread函数只接受不带引号的列名。有没有办法传入包含列名的变量 例如

使用匹配函数求解,该函数给出所需的列位置

dummy.data %>% gather(key, value, match(var, names(.)))
但同样的方法不适用于扩散函数

dummy.data %>% spread(a, match(var, names(.)))
Error: Invalid column specification

收集和传播功能采用不同的列规格。“聚集”采用列索引,而“排列”未提及其所需内容

如果要使用标准求值,则需要使用
聚集
排列

这两个结果相同

dummy.data %>% gather_("key", "value", var)
dummy.data %>% gather(key, value, match(var, names(.)))
这是有效的:

dummy.data %>% spread_("a",var)
#   B  a  b  c  d  e  f  g  h  i  j  k  l  m  n  o  p  q  r  s  t  u  v  w  x  y
# 1 A  1 NA NA NA NA  6 NA NA NA NA 11 NA NA NA NA 16 NA NA NA NA 21 NA NA NA NA
# 2 B NA  2 NA NA NA NA  7 NA NA NA NA 12 NA NA NA NA 17 NA NA NA NA 22 NA NA NA
# 3 C NA NA  3 NA NA NA NA  8 NA NA NA NA 13 NA NA NA NA 18 NA NA NA NA 23 NA NA
# 4 D NA NA NA  4 NA NA NA NA  9 NA NA NA NA 14 NA NA NA NA 19 NA NA NA NA 24 NA
# 5 E NA NA NA NA  5 NA NA NA NA 10 NA NA NA NA 15 NA NA NA NA 20 NA NA NA NA 25

请注意,排列只接受一个值列。如果你想分散多个列,你应该将它们变异(粘贴)成一个列,然后分散。也许你想要
分散
?不过,它对键列和值列都采用字符串。
dummy.data %>% gather_("key", "value", var)
dummy.data %>% gather(key, value, match(var, names(.)))
dummy.data %>% spread_("a",var)
#   B  a  b  c  d  e  f  g  h  i  j  k  l  m  n  o  p  q  r  s  t  u  v  w  x  y
# 1 A  1 NA NA NA NA  6 NA NA NA NA 11 NA NA NA NA 16 NA NA NA NA 21 NA NA NA NA
# 2 B NA  2 NA NA NA NA  7 NA NA NA NA 12 NA NA NA NA 17 NA NA NA NA 22 NA NA NA
# 3 C NA NA  3 NA NA NA NA  8 NA NA NA NA 13 NA NA NA NA 18 NA NA NA NA 23 NA NA
# 4 D NA NA NA  4 NA NA NA NA  9 NA NA NA NA 14 NA NA NA NA 19 NA NA NA NA 24 NA
# 5 E NA NA NA NA  5 NA NA NA NA 10 NA NA NA NA 15 NA NA NA NA 20 NA NA NA NA 25