R语言中函数参数如何调用list或dataframe的对应命名元素?
问题原因
R语言中$操作符后的名称会被直接作为固定字符串字面量处理,不会解析为你传入的变量。你写的testlist$element实际是在查找testlist中名为"element"的元素,而不是查找你传入的element参数值对应的元素,你的列表里没有这个元素,所以固定返回NULL。
解决方法
使用双中括号[[]]来索引列表,它支持传入变量作为元素名索引:
testfunc = function(element){ d = testlist[[element]] return(d) }
调用示例
# 传入字符串形式的元素名即可 testfunc("a") # 返回 [1] 1 2 3 testfunc("b") # 返回 [1] 4 5 6
更稳妥的写法建议
最好把目标列表也作为参数传入函数,避免函数依赖全局环境中的变量,通用性更强:
testfunc = function(input_list, element){ return(input_list[[element]]) } # 调用方式 testfunc(testlist, "c") # 返回 [1] 7 8 9
内容的提问来源于stack exchange,提问作者thpoole
相关产品推荐
相关产品推荐

