R包含数据帧行的二维数组

时间:2016-05-14 13:27:06

标签: arrays r dataframe

所以,我最近开始与R合作进行我感兴趣的研究,我正在尝试创建一个包含数据帧行的多维数组。

我有一个包含许多列的大型数据框,可以是数字,也可以是字符串。为简单起见,让我们使用3列: thread_id:1到10100之间的整数。 user_id:给用户的整数。 post_name:一个字符串,为我们提供帖子的标题

我想创建一个数据结构,最好是一个二维数组,其中第一维我们有thread_id,第二维我们有一行数据帧。

所以,作为回归

DataSet[1][1], I'd get thread_id: 1, user_id: 100, post_name: "some name 1"
DataSet[1][2], I'd get thread_id: 1, user_id: 101, post_name: "some name 2"
DataSet[5][10], I'd get thread_id: 5, user_id: 900, post_name: "some name 3"

这可以在R中做到吗?我之前只有Java经验,因此可以用Objects的数组来解决。

感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

如果,例如,thread_id取值为1到5,则可以使用:

mylist <- list()
for(i in 1:5)
    mylist[[i]] <- myData[thread_id==i,]

您当然可以使用max(myData$thread_id)代替5 ...

答案 1 :(得分:0)

这是您的另一种选择。

假设:df是data.frame

convert.to.str <- function(df){
    df_col <- names(df)
    val <- unlist(df)

    ans <- paste(df_col,val,sep=': ')

    final_ans <- paste(ans,collapse=', ')
}

int_ans <- data.frame(thread_id = df$thread_id, ans = apply(df,1,convert.to.str), nrow2=1:nrow(df))

library(reshape2)

int_ans2 <- dcast(int_ans,thread_id ~ nrow2,value.var='ans')

DataSet <- int_ans2[2:ncol(int_ans2)]

dimnames(DataSet)[[1]] <- int_ans2$thread_id