小编Sam*_*ers的帖子

`data` 必须是一个数据框,或者其他可以被 `fortify()` 强制的对象,而不是一个带有 ranger 类的 S3 对象

我正在使用 R。使用教程,我能够创建一个统计模型并为一些输出生成可视化图:

#load libraries
library(survival)

library(dplyr)

library(ranger)

library(data.table)

library(ggplot2)

#use the built in "lung" data set
#remove missing values (dataset is called "a")

a <- na.omit(lung)

#create id variable

a$ID <- seq_along(a[,1])

#create test set with only the first 3 rows

new <- a[1:3,]

#create a training set by removing first three rows

a <- a[-c(1:3),]



#fit survival model (random survival forest)

r_fit <- ranger(Surv(time,status) ~ age + sex + ph.ecog + ph.karno + pat.karno + meal.cal + …
Run Code Online (Sandbox Code Playgroud)

r data-visualization ggplot2

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

是否有 R 函数读取以 \n 作为(列)分隔符的文本文件?

问题

我正在尝试提出一种简洁/快速的方法来将由换行符 ( \n) 字符分隔的文件读取到多个列中。

本质上,在给定的输入文件中,输入文件中的多行应该成为输出中的单行,但是大多数文件读取功能明智地将换行符解释为表示新行,因此它们最终作为一个数据框柱子。下面是一个例子:

输入文件如下所示:

Header Info
2021-01-01
text
...
@
2021-01-02
text
...
@
...
Run Code Online (Sandbox Code Playgroud)

其中...表示输入文件中的潜在多行,并且@表示输出数据帧中真正应该是一行的结尾。所以在读取这个文件时,它应该变成这样的数据框(忽略标题):

X1 X2 ... Xn
2021-01-01 文本 ... ...
2021-01-02 文本 ... ...
... ... ... ...

我的尝试

我试过base、data.table、readr和vroom,它们都有两个输出之一,一个是单列的数据框,一个是向量。我想避免 for 循环,因此我当前的解决方案是使用base::readLines(), 将其作为字符向量读取,然后手动添加一些“正确”的列分隔符(例如;),然后再次加入和拆分。

Header Info
2021-01-01
text
...
@
2021-01-02
text
...
@
...
Run Code Online (Sandbox Code Playgroud)

我上面的代码有效并给出了想要的结果,但肯定有更好的方法吗?? 编辑:这是一个函数的内部,因此任何简化的部分(可能是更大的部分)是为了提高速度。

提前致谢!

r data.table readr

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

标签 统计

r ×2

data-visualization ×1

data.table ×1

ggplot2 ×1

readr ×1