2012-05-31 38 views
0

对不起,可能是一个完整的noob问题,但我今天刚刚开始用R编程,而且我已经被卡住了。在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] 

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

在此先感谢

+0

我会读的帮助页面通过键入得到什么?解压在控制台,如果你刚刚开始。 – joran

+0

感谢您的回复。我看了帮助(列表)和帮助(str_split),但仍然无法理解它。 – TrueWheel

+0

我的目的是要学习诸如'[[''只选择一个元素,所以如果索引没有太大的作用,就用它来处理这个事实。特别是,在列表中,'['和'[['有非常不同的行为,这对理解很重要。 – joran

回答

1

你可以用你的电话到str_splitunlist得到你要寻找的行为。

+0

谢谢,这工作完美。 – TrueWheel

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转储),你会得到一个因子变量,并可能不会理解如何优雅地恢复。

+0

感谢您的回应和明确的解释。现在我将考虑使用read.table。 – TrueWheel

2

通过使用unlist你将得到一个向量而不是向量列表,然后你将能够直接索引它:

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

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

如果你是有R开始,你真的应该阅读可用,如果你想了解子集,索引引进一个,等

+0

感谢您的建议!我现在会看看读表! – TrueWheel