所以,我最近开始与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的数组来解决。
感谢您的帮助!
答案 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