检查向量在名称列表中是否具有相同的名称,并仅保留验证我的向量中条件的名称
Check if vector have same names in a list of names and keep only the names that verify the condition in my vector
我有一个名为 liste
的字母列表,一个名为 myvec
的向量,一个数据框和另一个向量 ind1
如下所示
###############
## my sample ##
###############
liste=LETTERS[seq( from = 1, to = 10 )]
df1=data.frame(ID1=seq(from=1,to=3,by=1),
A=c(rep(1,3)),
B=c(rep(2,3)),
D=c(rep(3,3)),
F=c(rep(4,3)),
G=c(rep(5,3)))
myvec=c("A","B","G")
ind1=c(1,2,2,3,5,6)
names(ind1)=c("ID2","A","B","C","D","G")
ind1
ID2 A B C D G
1 2 2 3 5 6
df1
ID1 A B D F G
1 1 1 2 3 4 5
2 2 1 2 3 4 5
3 3 1 2 3 4 5
liste
"A" "B" "C" "D" "E" "F" "G" "H" "I" "J"
我想做的是(我在编写 post 但不是最后一个时弄清楚了前 3 个检查):
1- 检查 df1
的名称是否在 myvec
中:对于我的示例,它将给出 TRUE,因为 A B G
.
2- 检查 myvec
是否包含在 liste
中,那么我想在我的 df1
中只保留验证此条件的名称子集。
3- 对我的向量进行相同的 2 次检查 ind1
。
我能够进行 3 次检查,但不能进行 ind1
的最后一次检查。
预期输出将是:
# check 1
# no problem
any(myvec %in% names(df1))
[1] TRUE
# check 2
# no problem
if(any(myvec %in% liste)){
df1=cbind(df1[1],df1[,names(df1) %in% myvec])
}
ID1 A B G
1 1 1 2 5
2 2 1 2 5
3 3 1 2 5
# check 3
# no rpoblem
any(myvec %in% names(ind1))
[1] TRUE
# check 4
# where i got stocked i tried to repeat the same code in check 2 but i got an error for dimension in vector
# expected output
ind1
ID2 A B G
1 2 2 6
我们将不胜感激任何有关处理向量名称的帮助或资源。提前谢谢你
这是您要找的吗?
if(any(myvec %in% liste)){
ind1=c(ind1[1],ind1[names(ind1) %in% myvec])
}
我有一个名为 liste
的字母列表,一个名为 myvec
的向量,一个数据框和另一个向量 ind1
如下所示
###############
## my sample ##
###############
liste=LETTERS[seq( from = 1, to = 10 )]
df1=data.frame(ID1=seq(from=1,to=3,by=1),
A=c(rep(1,3)),
B=c(rep(2,3)),
D=c(rep(3,3)),
F=c(rep(4,3)),
G=c(rep(5,3)))
myvec=c("A","B","G")
ind1=c(1,2,2,3,5,6)
names(ind1)=c("ID2","A","B","C","D","G")
ind1
ID2 A B C D G
1 2 2 3 5 6
df1
ID1 A B D F G
1 1 1 2 3 4 5
2 2 1 2 3 4 5
3 3 1 2 3 4 5
liste
"A" "B" "C" "D" "E" "F" "G" "H" "I" "J"
我想做的是(我在编写 post 但不是最后一个时弄清楚了前 3 个检查):
1- 检查 df1
的名称是否在 myvec
中:对于我的示例,它将给出 TRUE,因为 A B G
.
2- 检查 myvec
是否包含在 liste
中,那么我想在我的 df1
中只保留验证此条件的名称子集。
3- 对我的向量进行相同的 2 次检查 ind1
。
我能够进行 3 次检查,但不能进行 ind1
的最后一次检查。
预期输出将是:
# check 1
# no problem
any(myvec %in% names(df1))
[1] TRUE
# check 2
# no problem
if(any(myvec %in% liste)){
df1=cbind(df1[1],df1[,names(df1) %in% myvec])
}
ID1 A B G
1 1 1 2 5
2 2 1 2 5
3 3 1 2 5
# check 3
# no rpoblem
any(myvec %in% names(ind1))
[1] TRUE
# check 4
# where i got stocked i tried to repeat the same code in check 2 but i got an error for dimension in vector
# expected output
ind1
ID2 A B G
1 2 2 6
我们将不胜感激任何有关处理向量名称的帮助或资源。提前谢谢你
这是您要找的吗?
if(any(myvec %in% liste)){
ind1=c(ind1[1],ind1[names(ind1) %in% myvec])
}