这是闪亮的应用程序的一部分,这些值来自被动ui /服务器,我缩小了我在server.R中的问题,我为了简单而使用这个简单的R,它应该正确地反映我的问题我希望,如何使用< @><<<<<<工作???我也试过,没有引用,eval
一无所获。
t <- data.frame(Titanic)
inputparam = "Class"
inputvalue = "2nd"
c(inputparam, "=",inputvalue)
noquote(inputparam)
head(subset(t, Class ==inputvalue)) ## works OK
head(subset(t, inputparam ==inputvalue)) ## <@>>< doesn't work !!!!!
#temp <- quote(inputparam)
#head(subset(t, eval(temp) == inputvalue))
答案 0 :(得分:1)
使用双方括号,使用单个方括号的子集,按变量 value 获取数据框列。这是R 101:
head(t[ t[[inputparam]] ==inputvalue, ])
所以$ -signs按名称获取列,如果您事先知道名称,这是很好的,也是首选。双方括号评估括号中的内容并按值获取。你可以在那里粘贴任何R表达式。
答案 1 :(得分:1)
eval
eval(parse( text=paste0("subset(t, ", inputparam, "=='", inputvalue, "')") ))
inputvalue
必须与其他引用括起来,以便parse
将其识别为character
。
或者你应该尝试这样的事情,(检查评论是否有原因)
t[ t[colnames(t)==inputparam]==inputvalue, ]