邮编或列举在R?

这些Python列表parsing的R等价物是什么:

[(i,j) for i,j in zip(index, Values)] [(i,j) for i,j in enumerate(Values)] [(i,j) for i,j in enumerate(range(10,20))] %MWE, indexing or enumerating to %keep up with the index, there may %be some parameter to look this up 

输出示例

 >>> [(i,j) for i,j in enumerate(range(10,20))] [(0, 10), (1, 11), (2, 12), (3, 13), (4, 14), (5, 15), (6, 16), (7, 17), (8, 18), (9, 19)] 

我已经用R的一些技巧解决了这个问题,但不记得了,第一个想法是itertools -pkg,但我希望find一个更习惯的做事方式。

有一些关于R的列表理解的讨论,例如在这里或那里 。 哈希包甚至提供类似字典的结构。 但是,正如其他人所说,很难尝试将一种语言设施映射到另一种语言设施上(即使这是编程语言实际提供的比较 ),而没有清楚地理解应该使用什么语言设施。 例如,我可以在R中模拟Python zip() ,如下所示:

python

 In [1]: x = [1,2,3] In [2]: y = [4,5,6] In [3]: zip(x, y) Out[3]: [(1, 4), (2, 5), (3, 6)] 

[R

 > x <- 1:3 > y <- 4:6 > list(x, y) # gives a simple list > as.list(paste(x, y)) # three tuples, as a list of characters > mapply(list, x, y, SIMPLIFY=F) # gives a list of 3 tuples > rbind(x, y) # gives a 2x3 matrix 

可以看出,这真的取决于你以后想要做什么。

回答python enumerate

在R中,列表是有序的(见这个答案 )。 因此,所有你需要的是索引任何键(使用names()[i] )或值(使用[[i]] )。

使用seq_along (或者可以for(i in 1:length(mylist)){...} ):

 > mylist <- list('a'=10,'b'=20,'c'=30) > for (i in seq_along(mylist)){ + print(paste(i,names(mylist)[i],mylist[[i]])) + } [1] "1 a 10" [1] "2 b 20" [1] "3 c 30" 

回答python zip

看到上面的答案模仿元组列表之一。 我喜欢的是一个数据框,如BondedDust的答案所示:

 > x <- 1:3 > y <- 4:6 > data.frame(x=x, y=y) xy 1 1 4 2 2 5 3 3 6 

如果这是一个matrix的Python打印表示,那么这个代码:

 j <- 10:20 matrix(c(seq_along(j), j), ncol=2) #------------ [,1] [,2] [1,] 1 10 [2,] 2 11 [3,] 3 12 [4,] 4 13 [5,] 5 14 [6,] 6 15 [7,] 7 16 [8,] 8 17 [9,] 9 18 [10,] 10 19 [11,] 11 20 

你仍然在离开我们这些不是Python用户的人,在黑暗中关于你所期望的输出结构。 您使用术语“列表”,但输出build议一组有序的元组。

鉴于@ chi的指导,我们也可以build议使用以R为中心的“数据框架”结构

 x <- 1:3 y <- 4:6 dfrm <- data.frame(x=x, y=y) 

…根据列types和matrix的行列索引方式访问特征,具有列表的灵活性。 或者可以使用hhh的请求,并使用rownamesvector(默认情况下从“1”开始,但可以被改变成为以“0”开始的字符vector)创buildj-vector的隐式索引值( 10:20

 dfrm <- data.frame(j=10:20) dfrm[3, ] #[1] 12 rownames(dfrm) <- 0:10 dfrm["0",] # [1] 10 

不幸的是,不小心会发现,dfrm [0,]不是一个快乐的电话,返回长度为0的向量。

Interesting Posts