【发布时间】:2015-04-21 10:55:51
【问题描述】:
我在 R 中有一个这样的数据框:
> df <- data.frame(cbind(C.01=1, C.02=1:8, C.03=c("A","B","C","D","E","F","G","H")))
我会得到一个像这样的子集:
> subset(df, C.03 == "A")
C.01 C.02 C.03
1 1 1 A
可以做相同的子集,但列的名称在xx <- "C.03" ??
因为subset(df, xx == "A") 不起作用。
谢谢。
【问题讨论】:
-
可以
df[df[xx] == "A", ] -
避免使用
subset并使用标准的[和[[运算符,就像@DavidArenburg 建议的那样。df[df[[xx]]=="A",]在这种情况下也有效。 -
stackoverflow.com/questions/29540658/r-how-to-make-a-subtable/… 只记得将字符串放在引号中
".." -
我强烈建议您使用 David 或 nicola 的解决方案,但如果您真的想使用
subset,您可以尝试使用subset(df,eval(parse(text=paste0(xx,"==","\"A\""))))。然而,这种 hacky 代码最终消除了subset的主要优势,即更好的可读性。使用subset也可能导致意外行为(例如,请参阅stackoverflow.com/questions/9860090/…)。