【发布时间】:2020-02-04 08:07:33
【问题描述】:
我有一个名为DATA 的data.frame。使用 BASE R,我想知道如何删除 DATA 中名为以下任何变量的变量:ar = c("out", "Name", "mdif" , "stder" , "mpre")?
目前,我使用DATA[ , !names(DATA) %in% ar],但这会删除不需要的变量,但它会再次创建一些以.1 为后缀的新变量。
提取后,是否可以只删除后缀?
注意1:我们无法访问r,唯一的输入是DATA。
注意2:这是玩具数据,感谢提供功能解决方案。
r <- list(
data.frame(Name = rep("Jacob", 6),
X = c(2,2,1,1,NA, NA),
Y = c(1,1,1,2,1,NA),
Z = rep(3, 6),
out = rep(1, 6)),
data.frame(Name = rep("Jon", 6),
X = c(1,NA,3,1,NA,NA),
Y = c(1,1,1,2,NA,NA),
Z = rep(2, 6),
out = rep(1, 6)))
DATA <- do.call(cbind, r) ## DATA
ar = c("out", "Name", "mdif" , "stder" , "mpre") # The names for exclusion
DATA[ , !names(DATA) %in% ar] ## Current solution
#>
# X Y Z X.1 Y.1 Z.1 ## X.1 Y.1 Z.1 are automatically created but no needed
# 1 2 1 3 1 1 2
# 2 2 1 3 NA 1 2
# 3 1 1 3 3 1 2
# 4 1 2 3 1 2 2
# 5 NA 1 3 NA NA 2
# 6 NA NA 3 NA NA 2
【问题讨论】:
-
创建变量是因为您将两个具有相同列名的数据框组合在一起。数据框不能有两列同名,因此 R 将 0.1 添加到每个重复项。它与您提取特定列无关。
-
那么您的预期输出是什么?您要删除那些
.1变量还是要删除后缀?
标签: r list function loops dataframe