3

假设我希望在 R 中对数据帧进行硬编码。

my_df = data.frame(list(Name=c("foo", "bar", "baz", "qux"), 
              Result=c("Hello", NA, "foobar", "World")))

baz如果数据框更长(例如,如果它包含数十行),则与之相关联的内容不会立即直观foobar(即,这两个值共享同一行)。

是否有一种视觉上更易于人类阅读的方式在 R 中对数据帧进行硬编码?

编辑1:

为了澄清我的问题,我不是在寻找另一种方法来格式化数据框的硬编码(例如通过用空格隔开单词来对齐两行)。相反,我正在寻找一种方法,例如,按行指定数据框。

4

3 回答 3

5

您可以使用包中的frame_data()命令tibble

例如:

dat <- frame_data(
  ~x, ~y,  ~z,
  "a", 2,  3.6,
  "b", 1,  8.5
)

它提供的硬编码比默认的“按列”的 data.frame 输入方法更“按行”。

来源

于 2016-08-26T15:53:09.933 回答
4

另一种方法是使用read.table(text = "..."),例如

d <- read.table(text = "Name Result
                        foo  Hello
                        bar  NA
                        baz  foobar
                        qux  World", 
                header = TRUE, 
                stringsAsFactors = FALSE)
str(d)
# 'data.frame': 4 obs. of  2 variables:
#  $ Name  : chr  "foo" "bar" "baz" "qux"
#  $ Result: chr  "Hello" NA "foobar" "World"
于 2016-08-26T16:08:03.133 回答
1

我从Noam Ross 的推文中得到这个:

 readr::read_delim(
   '  Name  |   Result
    # -------------------
       foo  |   Hello
       bar  |   NA
       baz  |   foobar
       qux  |   World ',
   trim_ws = TRUE, comment="#", delim="|")
于 2016-08-26T16:14:40.187 回答