0
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$("

有没有办法通过 contrast$input 获取值?

4

1 回答 1

6

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

“[[ 和 $ 都选择列表的单个元素。主要区别在于 $ 不允许计算索引,而 [[ 允许。x$name 等效于 x[[“name”,exact = FALSE]]”

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

于 2012-09-25T00:41:08.440 回答