R使用数据条目作为值来返回数据帧,遍历多维数据帧,以创建新的列表条目。

时间:2016-06-29 02:33:31

标签: r

我有一个文件路径和一个以

形式的值列表
[path1, [value1,value2,value3,...]]
[path2, [valueA,valueB]]

我想将其转换为

形式
path1, value1
path1, value2
path1, value3
.
.
.
path2, valueA
path2, valueB
.
.
.

我知道我可以用foreach做到这一点,但我不确定如何在R基地做到这一点。

我很接近

makeTuple<- function(path,value) 
{   
         result <- cbind(path,value)  
         return(result) 
} 
makeTupleList<- function(listFull) 
{   
         path <- listFull[1,1]   
         list <- listFull[1,2]   
         result <- lapply(list, makeTuple, path=path)   return(result) 
}

测试值:

x <- list(c(1,2),c(3,4))
y <- cbind(c(5,6), x)

结果:

makeTupleList(y)
$x
     path value
[1,] 5    1    
[2,] 5    2    

我不确定如何让数据框遍历每一行。

在Haskell中我会做类似

的事情
tupleMake (x,list) =  [(x,y)| y <- list]

然后只是我的元组列表与表单的路径 (路径,价值观)

2 个答案:

答案 0 :(得分:2)

如果我正确理解了问题,这将有效

result <- as.data.frame.matrix(cbind(rep(paths,sapply(values,length)),unlist(values)))
colnames(result) <- c("path","value")

数据

values <- list(c(1,2),c(3,4))
paths <- c(5,6)

答案 1 :(得分:0)

可能值得尝试的一个选项,来自@ user2100721的pathsvalues

do.call(rbind, Map(cbind, paths, values))
     [,1] [,2]
[1,]    5    1
[2,]    5    2
[3,]    6    3
[4,]    6    4