在R中获取list by name属性的值

时间:2012-09-24 23:52:14

标签: r

contrast=list("1"="profit")
input=readline("please input")
please input1
input
[1] "1"
class(input)
[1] "character"
contrast[[input]]
[1] "profit"
contrast$"1"
[1] "profit"
contrast$input
NULL

为什么contrast$input不等于contrast$"1"? 输入值为“1”,类也是字符。

eval(input)
[1] "1"
contrast$(eval(input))
Error: unexpected '(' in "contrast$("
contrast$eval(input)
Error: attempt to apply non-function
eval(paste(input))
[1] "1"
class(eval(paste(input)))
[1] "character"
contrast$eval(paste(input))
Error: attempt to apply non-function
contrast$(eval(paste(input)))
Error: unexpected '(' in "contrast$("

是否无法通过对比$ input输入值?

1 个答案:

答案 0 :(得分:6)

这是不可能的。从文档(?Extract):

  

“两者[[和$选择列表的单个元素。主要   差异是$不允许计算指数,而[[做。   x $ name相当于x [[“name”,exact = FALSE]]“

通常,$用于交互式使用,但对于编程(脚本,函数等),您应该使用[[