如何使用which.min函数提取数据集中对应最小得分的列?
解决R中提取最小得分对应列的问题
报错原因
$操作符仅支持直接传入字面量列名(比如$V1),不能嵌套函数调用。all_datasets$which.min(score)会被R错误解析为:试图将which.min当作列名并调用它(但which.min并非列名对应的函数),因此抛出attempt to apply non-function错误。
可行解决方案
以下几种方法都能正确提取目标列:
方法1:先获取列名,再用[[ ]]提取
先通过names()拿到最小得分对应的列名,再用支持变量索引的[[ ]]提取:
# 获取最小得分对应的列名 min_col_name <- names(score)[which.min(score)] # 提取目标列 target_col <- all_datasets[[min_col_name]]
方法2:直接用位置索引提取
which.min(score)返回的是最小得分列的位置(此处为5),直接用位置索引提取:
# 用方括号索引 target_col <- all_datasets[, which.min(score)] # 或者用[[ ]] target_col <- all_datasets[[which.min(score)]]
验证结果
两种方法最终都会提取出与all_datasets$V1完全一致的列数据,符合预期需求。
内容的提问来源于stack exchange,提问作者Jackie
相关产品推荐
相关产品推荐

