使用R中的列表

时间:2012-05-31 21:31:28

标签: r

很抱歉可能有一个完整的noob问题,但我今天刚开始用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]

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

提前致谢

3 个答案:

答案 0 :(得分:2)

使用unlist,您将得到一个向量而不是向量列表,然后您就可以直接对其进行索引:

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

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

如果您从R开始,如果您想了解子集,索引等,您真的应该阅读其中一个可用的介绍。

答案 1 :(得分:1)

您可以将str_splitunlist一起打包,以获得您正在寻找的行为。

答案 2 :(得分: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中的字段分隔符是“white-space”,这似乎就是你所拥有的,所以你不需要提供sep=参数,read.table函数将尝试导入为数字。为了安全起见,您可以考虑使用colClasses=rep("numeric", 3)强制该选项,因为如果遇到奇怪的项目(例如通常由Excel转储生成),您将获得一个因子变量,并且可能无法理解如何恢复优雅。