首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Paste / NoQuote -未按预期工作

Paste / NoQuote -未按预期工作
EN

Stack Overflow用户
提问于 2015-08-03 16:49:50
回答 2查看 282关注 0票数 0

我有一个数据框c1,如下所示:

代码语言:javascript
运行
复制
str(c1)
#'data.frame':  2312 obs. of  6 variables:
# $ dt   : Date, format: "2014-04-01" "2014-04-01" "2014-04-01" ...
# $ base : Factor w/ 2 levels "AA","AB": 1 1 1 2 2 2 2 1 1 1 ...
# $ curr : Factor w/ 5 levels "BA","BB","BC",..: 2 3 5 1 2 3 4 2 3 5 ...
# $ trans: int  72 176 4365 234 144 352 16762 61 160 4276 ...
# $ amt  : num  2.18e+09 5.55e+09 9.99e+09 3.75e+08 4.37e+09 ...
# $ rate : num  1.11e-04 1.22e-02 1.26 3.94 5.65e+03 ...

d = "c1"
d
# [1] "c1"

现在,我使用d而不是实际的数据框名称,它不能正常工作-

代码语言:javascript
运行
复制
i <- sapply( c1, is.factor)
i
#   dt  base  curr trans   amt  rate 
#FALSE  TRUE  TRUE FALSE FALSE FALSE 

对,是这样!

代码语言:javascript
运行
复制
i <- sapply( paste(d), is.factor)
i
#   c1 
#FALSE 

不正确

代码语言:javascript
运行
复制
i <- sapply( noquote(d), is.factor)
i
#   c1 
#FALSE 

不正确

有没有办法解决这个问题?

编辑-

代码语言:javascript
运行
复制
c1[i] <- lapply(c1[i], as.character)

作品

代码语言:javascript
运行
复制
get(d)[i] <- lapply( get(d)[i], as.character)

失败

代码语言:javascript
运行
复制
for (j in 1:length(i)) { ifelse(is.factor(get(d)[j]),get(d)[i] <- as.character(get(d)[i])) }

失败

可以在任何地方使用get,还是有3/4的方法可以使用get()

再次感谢

EN

回答 2

Stack Overflow用户

发布于 2015-08-03 16:54:53

如果我没理解错的话,你要找的是

代码语言:javascript
运行
复制
xy <- data.frame(a = runif(3), b = letters[1:3])
sapply(get("xy"), is.factor)

请注意,这是一种糟糕的做法。如果您正在动态地创建变量名,则应该考虑使用其他对象,如列表,来存储data.frame。

票数 2
EN

Stack Overflow用户

发布于 2015-08-04 11:44:46

目前,这是可行的。尽管这很难理解。

代码语言:javascript
运行
复制
.eval <- function(evaltext,envir=sys.frame()) {
  ## evaluate a string as R code
  eval(parse(text=evaltext), envir=envir)
}

.eval(paste( "i = sapply(",noquote(d),",is.factor)",sep=""))
.eval(paste( noquote(d),"[i] <- lapply(",noquote(d),"[i], as.character)",sep=""))

我仍然在寻找更好的替代方案。这太糟糕了,我不能接受这个答案:-(

谢谢,曼尼什

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31783109

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档