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输入值?
答案 0 :(得分:6)
这是不可能的。从文档(?Extract
):
“两者[[和$选择列表的单个元素。主要 差异是$不允许计算指数,而[[做。 x $ name相当于x [[“name”,exact = FALSE]]“
通常,$
用于交互式使用,但对于编程(脚本,函数等),您应该使用[[
。