小编Bar*_*ara的帖子

R中的Parsing =运算符不会产生语言对象

我试图操纵一些解析的R代码并使用=运算符遇到困难.正如这个片段所示,我可以得到一个对象,说它的类型是"语言",但是当它在为S4类的一个槽分配值时R使用的"is"测试时返回false.

以下是一些示例代码:

parsed <- parse(text = "cylinders = c(4, 6, 8)")
print (typeof(parsed))  # Prints "expression"

langObj <- parsed[[1]]
print (typeof(langObj))  # Prints "language"
print (is(langObj, "language"))  # Prints FALSE

setClass("Foo",
  slots = list(
    s1 = "language")
)

setMethod ("initialize",
  "Foo",
  function(.Object, obj){
    .Object@s1 <- obj
    return (.Object)
  }
)

new (Class = "Foo", langObj)
Run Code Online (Sandbox Code Playgroud)

最后一行产生错误:

Error in (function (cl, name, valueClass)  : 
  assignment of an object of class “=” is not valid for @‘s1’ in an object of class …
Run Code Online (Sandbox Code Playgroud)

r

7
推荐指数
1
解决办法
67
查看次数

getAnywhere("timestamp")从Rstudio中找到两个函数

我试图timestamp在Rstudio中调用该函数,但似乎是调用了我想要的版本以外的版本. getAnywhere表明有2个定义:

> getAnywhere(timestamp)
2 differing objects matching ‘timestamp’ were found
in the following places
  package:utils
  namespace:utils
Use [] to view one of them

> timestamp
function(...) .rs.callAs(name,
                                                         hook,
                                                         original,
                                                         ...)
<environment: 0x0000000005f42030>

> timestamp()
##------ Thu Mar 06 15:08:51 2014 ------##

> utils::timestamp
function (stamp = date(), prefix = "##------ ", suffix = " ------##",
    quiet = FALSE)
{
    stamp <- paste0(prefix, stamp, suffix)
    .External2(C_addhistory, stamp)
    if (!quiet)
        cat(stamp, sep = "\n")
    invisible(stamp)
}
<bytecode: 0x0000000005f447a8> …
Run Code Online (Sandbox Code Playgroud)

r rstudio

5
推荐指数
1
解决办法
656
查看次数

使用stringsAsFactors = FALSE创建空数据框

我正在尝试创建一个空数据框,其中数据将是字符串,并且stringsAsFactors设置为FALSE.但是,当我这样做时,它似乎不记得stringsAsFactors的值.

如果我创建一个空行,它可以工作,如下所示:

> df <- data.frame(a="", b="", stringsAsFactors=FALSE)
> new.row <- c("a", "z")
> df <- rbind(df, new.row)
> df
  a b
1    
2 a z
> df[2,1] <- "q"
> df
  a b
1    
2 q z
Run Code Online (Sandbox Code Playgroud)

但是,我想要一个空的数据框.但是,当我这样做时,它会将我后来添加的字符串视为因素:

> df2 <- data.frame(a=character(), b=character(), stringsAsFactors=FALSE)
> df2 <- rbind(df2, new.row)
> df2
  X.a. X.z.
1    a    z
> df2[2,1] <- "q"
Warning message:
In `[<-.factor`(`*tmp*`, iseq, value = "q") :
  invalid factor level, NA generated
Run Code Online (Sandbox Code Playgroud)

如何在没有字符串因子的情况下创建空数据框?

r

1
推荐指数
1
解决办法
4211
查看次数

标签 统计

r ×3

rstudio ×1