R语言自定义索引识别函数传入列名参数返回logical(0)问题
问题根源
R的$运算符在索引数据框列时,会将$后的标识符当做固定的列名字面量解析,不会识别为你定义的函数参数变量。你在函数内写的dataframe$column_name,实际是在查找数据框中名为column_name的列,而非读取column_name参数传入的"face"值,你的deck3不存在该列,因此返回空逻辑值logical(0)。
修复方案
以下是两种常用的基础R实现方式:
- 方法1:使用支持动态字符串索引的双括号
[[]]
index_identifier <- function(dataframe, text_to_be_changed, column_name){ text_to_be_changed == dataframe[[column_name]] }
- 方法2:使用
[行,列]格式索引
index_identifier <- function(dataframe, text_to_be_changed, column_name){ text_to_be_changed == dataframe[, column_name] }
修改完成后调用index_identifier(deck3,"ace","face")即可返回预期的布尔向量。
内容的提问来源于stack exchange,提问作者marcelo aguiar
相关产品推荐
相关产品推荐

