I have a data frame in R like this:
> 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", ]
进行筛选。 - David Arenburgsubset
,而是使用标准的[
和[[
运算符,就像 @DavidArenburg 建议的那样。此外,df[df[[xx]]=="A",]
在这种情况下也适用。 - nicola".."
。以下是有关编程的内容:http://stackoverflow.com/questions/29540658/r-how-to-make-a-subtable/29541508#29541508 - rmuc8subset
,你可以尝试subset(df,eval(parse(text=paste0(xx,"==","\"A\""))))
。然而,这种hacky代码最终消除了subset
更好的可读性的主要优势。使用subset
也可能导致意外的行为(例如,参见https://dev59.com/52kw5IYBdhLWcg3wfKhB)。 - cryo111