R语言中能否通过方括号按列名索引数据框的列?
解答
完全可以,你写的test_vec <- sample.df[,'sample_column'] 本身就是R语言数据框原生支持的标准写法,完全不需要提前查找目标列的序号。
实际使用时需要注意几个细节:
- 列名匹配必须和数据框内的实际存储值完全一致,大小写、首尾空格、特殊字符都不能有偏差,否则会直接抛出“选择了未定义列”的错误。
- 这种写法如果只取单列,默认会因为内置的
drop=TRUE参数设置,把结果转成原子向量,和用sample.df$sample_column取到的结果类型、内容完全一致。如果需要哪怕只取单列也保留数据框结构,可以显式加drop=FALSE参数,即sample.df[, 'sample_column', drop=FALSE],这个写法在写自动化批处理、函数封装的时候特别有用,能避免因为结构意外转换引发的逻辑bug。 - 支持一次选取多列,只要在方括号的列位置传入由列名组成的向量即可,比如要取
col1、col2、col3三列,写法就是sample.df[, c('col1', 'col2', 'col3')],返回结果依旧是标准数据框结构。 - 支持动态传入列名:可以把目标列名存在普通字符变量里,直接把变量放到方括号的列位置即可,不需要把列名转成数字索引,能完全规避临时调整数据框列顺序、增删列导致的序号错位问题。
内容的提问来源于stack exchange,提问作者PortMadeleineCrumpet
相关产品推荐
相关产品推荐

