R系列之通过传参得到列表中的值

这篇文章学习了通过传参得到列表中元素值的方法,主要使用的是get函数。和之前R系列之将字符串转化为变量中学习的get可以得到字符串对应的变量的值不同的是这里的get指定的搜索对象是列表而不是默认的当前环境。

背景

想在R中实现一个类似字典的功能,因为存储的元素不是单个的元素,所以named vector并不是很好用,这里想到的就是使用list来实现,但是list访问的时候不能直接使用list$args这种形式。

get函数

之前在R系列之将字符串转化为变量中学习的get可以得到字符串对应的变量的值,这里学习的其可以根据listattribute字符得到对应的元素信息,其实都是同一种功能:在指定的object中根据name查找元素。上述两种用法的区别是指定的object不同,get函数指定object的方法包括三种:

  • 整数值表示的在search列表中的位置
  • 字符表示的search列表中元素的名称
  • an environment

默认的位置-1表示的是当前的environment(使用get得到字符串对应的变量的值)。


实际问题

正常的获取list中元素的方法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
test=list(name=c(1,2,3))
test
$name
[1] 1 2 3

# 直接使用整数表示的位置
test[[1]]
[1] 1 2 3
# 直接使用test$name
test$name
[1] 1 2 3

# 使用get函数
get("name",test)
[1] 1 2 3

如果想传参的话:

1
2
3
4
5
6
7
8
a="name"
# 这个时候就得不到想要的结果
test$a
NULL

# 使用get函数成功传参
get(a,test)
[1] 1 2 3


参考链接



-----本文结束感谢您的阅读-----

本文标题:R系列之通过传参得到列表中的值

文章作者:showteeth

发布时间:2020年05月10日 - 15:53

最后更新:2020年05月21日 - 23:15

原始链接:http://showteeth.tech/posts/11123.html

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

0%