1

我想以编程方式转换从文件读取的 R 数据框中列的类型。下面的示例已损坏。建议?

文件 foo.tsv:

x
1
2

被破坏的代码:

foo = read_tsv("foo.tsv")
foo[,'x'] <- as.integer(foo[,'x'])

错误:

Error: (list) object cannot be coerced to type 'integer'

在这种情况下read_tsv已经返回一个整数,但我想编写一个传入列名的函数。

此代码有效:

foo$x <- as.integer(foo$x)

我不知道如何修改它以让我在变量中给出列名。

如果我将 foo 初始化为这样的数据框:

foo = data.frame(x=c("1", "2"))

然后原始foo[,x]变体起作用,让我相信这是关于read_tsv.

这显示了一堆东西:

> str(foo)
Classes ‘tbl_df’, ‘tbl’ and 'data.frame':   2 obs. of  1 variable:
 $ x: int  1 2
 - attr(*, "spec")=List of 2
  ..$ cols   :List of 1
  .. ..$ x: list()
  .. .. ..- attr(*, "class")= chr  "collector_integer" "collector"
  ..$ default: list()
  .. ..- attr(*, "class")= chr  "collector_guess" "collector"
  ..- attr(*, "class")= chr "col_spec"

我正在使用 R 3.3.2 和 dplyr 0.5.0。

4

0 回答 0