1

我在执行嵌套 for 循环以创建用于抓取的词干列表时遇到问题。简单的数据框包含 2 个变量,名称和照片数量。我希望代码吐出这样的词干列表/矩阵:

亚历克斯/1 亚历克斯/2 亚历克斯/3 爱丽丝/1 .....

我可以在一次做一行时让它工作,但不幸的是我无法弄清楚如何通过所有名称的循环来完成它。

任何帮助将不胜感激,希望任何想用这种结构抓取 HTML 的人都可以使用!

到目前为止,这是我的代码:

stems<-list()
for(Name in data$Names){
    for(Photo in data$Photos)
    stems[Photo]<-print(paste(Name,1:data$Photos,sep="/"))
}
stems.matrix<-as.matrix(stems)
4

2 回答 2

3

这是你想要的吗?我知道你说你想要一个列表,但我认为字符向量同样简单。

#I'm guessing your data looks something like this...
data <- data.frame( Names = c("Simon" , "Alex" , "Ben", "Dave") , Photos = c( 4 , 3 , 2 , 3) , Misc = c( 4 , 3 , 4 , 4 ) )

#Use apply rather than nested loops
stem.list <- unlist( apply( data , 1 , function(x) { i <- 1:x[2]; paste( x[1] , i , x[3] , sep ="/") } ) )

这使...

> stem.list
 [1] "Simon/1/4" "Simon/2/4" "Simon/3/4" "Simon/4/4" "Alex/1/3"  "Alex/2/3"  "Alex/3/3" 
 [8] "Ben/1/4"   "Ben/2/4"   "Dave/1/4"  "Dave/2/4"  "Dave/3/4" 
于 2013-02-19T22:52:33.383 回答
0
 dat <- data.frame(name=letters[1:4],photo=1:4)
 dat.ex <- expand.grid(dat)
 paste(dat.ex[,1],dat.ex[,2],sep='/')
 [1] "a/1" "b/1" "c/1" "d/1" "a/2" "b/2" "c/2" "d/2" "a/3" "b/3" "c/3" "d/3" "a/4" "b/4" "c/4" "d/4"
于 2013-02-19T23:00:08.750 回答