我试图使用select {dplyr}将DT中的列提取到新的DT
extract_Data <- select(.data = master_merge, subjectID, activity_ID,
contains("mean\\(\\)"), contains("std\\(\\)"))
Run Code Online (Sandbox Code Playgroud)
有563列,所以我要求提取第一和第二列(主题,活动)和所有其他列,其中存在mean()或std().
没有可以在此处创建的重复列.所以难以理解为什么.我已尝试选择的每个变体,但总是错误:重复列名称.
我怎么能解决这个问题 - 我已经浏览了所有563列名称,并且没有重复.
小智 31
问题的根源是原始列名称中的无效字符.R中的变量名称限制中的讨论也 适用于列名称.尝试使用make.names()强制使用有效字符强制使用唯一列名.
valid_column_names <- make.names(names=names(master_merge), unique=TRUE, allow_ = TRUE)
names(master_merge) <- valid_column_names
Run Code Online (Sandbox Code Playgroud)
小智 13
这是我找到的解决方案:
data <- data[ , !duplicated(colnames(data))]
Run Code Online (Sandbox Code Playgroud)
此子集不包含所有重复列的数据集.
希望能帮助到你.
重复匹配过滤器可能导致"重复名称"错误.例:
library(dplyr)
x <- data.frame(1, 2, 3)
names(x) <- c("a", "a", "b")
x %>%
select(matches("b"))
Run Code Online (Sandbox Code Playgroud)
如果您不需要这些列,请将其删除
x <- x[ !duplicated(names(x)) ]
Run Code Online (Sandbox Code Playgroud)