0

对不起,可能是一个完整的菜鸟问题,但我今天才开始用 R 编程,我已经被困住了。

我正在从格式的文件中读取一些数据。

3.482373 8.0093238198371388 47.393873
0.32 20.3131 31.313

我想要做的是拆分每一行,然后处理每个单独的数字。

我已经导入了 stringr 包并使用

x = str_split(line, " ")

这会产生一个我想索引但不知道如何索引的列表。

我了解到 x[[1:2]] 获得了第二个元素,但仅此而已。理想情况下,我想要类似的东西

x1 = x[1]
x2 = x[2]
x3 = x[3]

但无论如何都找不到这样做。

提前致谢

4

3 回答 3

2

通过使用unlist,您将获得一个向量而不是向量列表,然后您将能够直接对其进行索引:

R> unlist(str_split("foo bar baz", " "))
[1] "foo" "bar" "baz"

但也许您应该直接从 read.table 或其变体之一读取您的文件?

如果你从 R 开始,如果你想了解子集、索引等,你真的应该阅读可用的介绍之一。

于 2012-05-31T21:50:32.530 回答
1

您可以将调用包装为str_splitwithunlist以获得您正在寻找的行为。

于 2012-05-31T21:46:33.977 回答
1

获取它的通常方法是将其导入数据框(一种特殊的列表)。如果文件名为“fil.dat”并且位于“C:/dir/”中

 dfrm <- read.table("C:/dir/fil.dat")  # resist the temptation to use backslashes
 dfrm[2,2]   # would give you the second item on the second row.

默认情况下,R 中的字段分隔符是“空白”,这似乎是您所拥有的,因此您不需要提供sep=参数并且 read.table 函数将尝试导入为数字。为了安全起见,您可能会考虑强制使用该选项,colClasses=rep("numeric", 3)因为如果遇到奇怪的项目(例如经常由 Excel 转储生成的项目),您将获得一个因子变量,并且可能无法理解如何优雅地恢复。

于 2012-05-31T21:49:24.180 回答