使用outer获取数据帧单元格值

时间:2016-01-04 03:43:42

标签: r dataframe

我正在尝试从数据框中获取值,但是当我尝试获取单元格值时,R会给出整个列。我该如何解决这个问题?

outer(row.names(temp_df),colnames(temp_df),function(x,y){paste(x,",",y,",",temp_df[x,y])})
#      [,1]              
# [1,] "x , y , c(2, 1)" 
# [2,] "x2 , y , c(2, 1)"
temp_df<-data.frame(c(1,2),c(3,4))
temp_df<-data.frame(c(1,2),c(3,4))
colnames(temp_df)<-c("c1","c2")
row.names(temp_df)<-c("x","x2")
outer(row.names(temp_df),colnames(temp_df),function(x,y){paste(x,",",y,",",temp_df[x,y])})
#      [,1]                      [,2]                     
# [1,] "x , c1 , c(1, 2, 1, 2)"  "x , c2 , c(3, 4, 3, 4)" 
# [2,] "x2 , c1 , c(1, 2, 1, 2)" "x2 , c2 , c(3, 4, 3, 4)"
temp_df
#    c1 c2
# x   1  3
# x2  2  4

我的最终目标是:

# x,y,2
# x2,y,1

1 个答案:

答案 0 :(得分:0)

问题是你的情况下x和y不是单个值,而是矢量(基本上是行和列)。据我所知,您正在尝试切片提供向量的temp_df,而不是单个值。 我可能还没有理解你想要做什么,但我希望这会有所帮助:

library(reshape2)
library(dplyr)

temp_df %>% mutate(name=rownames(temp_df)) %>% 
            melt(id.vars="name") %>%      
            apply(1,function(i){
                 return(paste(i,collapse=","))
            })

#"x,c1,1"  "x2,c1,2" "x,c2,3"  "x2,c2,4"