我在计算与data.frame的某一列中某个值匹配的行时,尝试使用变量作为列名;例如;
matches <- 0
cols <- c("B1","B2","B3","S1")
for (i in length(cols)) {
matches <- matches + nrow(dt[cols[i]=="some value"])
}
我也试过子集但没有成功:
nrow(subset(dt, cols[i]=="some value"))
关于我如何做到这一点的任何建议?
答案 0 :(得分:0)
您需要使用get
将字符串转换为变量名称
nrow(subset(dt, get(cols[i])=="some value"))
答案 1 :(得分:0)
我不确定dt
的类是什么。从你上面的内容来看,我猜它会是data.frame
。
在您的代码中,最让我感到困惑的是subset(dt, cols[i]=="some value")
或dt[cols[i]=="some value"]
。
我想cols
是dt
的 colnames ,您想要计算"some value"
中dt
的频率。
你可以试试这个,
length(dt[dt=="some value"])
或具体指定dt
,
subdt <- dt[,cols]
length(subdt[subdt == "some value"])
希望它会有所帮助。