【发布时间】:2017-05-10 23:30:37
【问题描述】:
我有一个包含 10 列的数据框。例如,这是虚拟版本:
df = tbl_df(replicate(10,sample(0:1,1000,rep=TRUE)))
我想在 dplyr 中这样做:
df %>% mutate(V2 = ifelse(is.na(V6), V2, paste(V2,V3,sep=" ")))
我得到:
Error: Each variable must have a unique name.
但如果我这样做:
df$V2 = ifelse(is.na(df$V6), df$V2, paste(df$V2,df$V3,sep=" "))
它有效。
如何使用dplyr 语句完成最后一步?
【问题讨论】:
-
你为什么不做
df %>% mutate(V2=ifelse(is.na(V6), V2, paste(V2,V3,sep=" ")))? -
是的,我做到了!它说
Error: Each variable must have a unique name. -
当我用你的虚拟 df 执行此操作时,它可以工作。检查你的真实df的列名。
-
哈哈,谢谢,我确实查看了案例,在我的文件中,名称是 V1、V2、V3...
-
正如@Lamia 所说,问题很可能出在列名上。试试:
df %>% setNames(make.names(names(.), unique = TRUE)) %>% mutate(V2 = ifelse(is.na(V6), V2, paste(V2, V3, sep = " ")))