我正在尝试从数据框中获取值,但是当我尝试获取单元格值时,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
答案 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"