For循环变量作为列名
例如,我创建了一个包含数据帧列名的小向量,我想循环这些变量,以便删除列中变量For循环变量作为列名,r,loops,for-loop,R,Loops,For Loop,例如,我创建了一个包含数据帧列名的小向量,我想循环这些变量,以便删除列中变量I等于列名的某些值 创建向量: Ellenberg_value<- c( "VOCHTIND", "ZUURGIND", "STIKSIND", "ZOUT_IND") Ellenberg_值当列名存储为字符向量时,必须使用另一种机制(使用[[而不是$)进行子集。例如: df <- data.frame(a = 1 ,b = 3) cols <- names(df) 而您的代码没有: for (i
I
等于列名的某些值
创建向量:
Ellenberg_value<- c( "VOCHTIND", "ZUURGIND", "STIKSIND", "ZOUT_IND")
Ellenberg_值当列名存储为字符向量时,必须使用另一种机制(使用[[
而不是$
)进行子集。例如:
df <- data.frame(a = 1 ,b = 3)
cols <- names(df)
而您的代码没有:
for (i in cols) {
print(i)
print(df$i)
}
[1] "a"
NULL
[1] "b"
NULL
因此,在您的代码中,您可以使用Ecobase[!Ecobase[[i]]==“X”,]
我认为不需要循环。如果我理解正确,您希望删除至少一列“VOCHTIND”、“ZUURGIND”、“STIKSIND”、“ZOUT_IND”
等于“X”
的行,对吗
Ecobase[rowSums(Ecobase[,Ellenberg_value] == "X") == 0,]
如果还想删除带有“?”的行,可以执行以下操作:
Ecobase[rowSums(sapply(Ecobase[Ellenberg_value], '%in%', c("X", "?"))) == 0,]
请尝试Ecobase[!Ecobase[[i]]=“X”,]
Ecobase[rowSums(Ecobase[,Ellenberg_value] == "X") == 0,]
Ecobase[rowSums(sapply(Ecobase[Ellenberg_value], '%in%', c("X", "?"))) == 0,]