代码可以工作,但当我尝试将其转换为函数时失败(R)

plupiseo  于 2023-01-06  发布在  其他
关注(0)|答案(2)|浏览(104)

我正在尝试创建一个函数,该函数将接收一个数据表,将其转换为df,将行名称更改为单独的列,然后删除行名称(否则行名称将出现两次),然后重新排列列。
我可以让它在函数外工作,但一旦我把它放进函数,它就不工作了。
示例数据:

tb <- matrix(rep(2, times=8), ncol=2, byrow=TRUE)
tb <- as.table(tb)

在不创建函数的情况下获得所需结果:

n <- as.data.frame.matrix(tb)   
n$Variable <- row.names(n)   #Make new column containing row names. Call it Variable.
row.names(n) <- NULL   #Get rid of row names (otherwise the row names will appear twice)
n <- n[,c("Variable", "A", "B")]  #Rearrange columns

尝试执行与上面相同的操作,但将其转换为函数:(到这里,我意识到输出不是我所期望的。我希望df在这个阶段包含一个额外的列,其中包含行名称。相反,我只打印了行名称)

dataframe_function<-function(data) {
  n <- as.data.frame.matrix(data)
  n$Variables <- row.names(n)
  #rownames(n) <- NULL
}

df1 <- dataframe_function(tb)
df1

我试了很多方法,但都找不到问题所在,也无法在网上找到解决方案。请问有谁能帮我吗?

mhd8tkvw

mhd8tkvw1#

不如这样:

tb<-matrix(rep(2, times=8), ncol=2, byrow=TRUE)
tb<-as.table(tb)

dataframe_function<-function(data){
  rn <- rownames(data)
  n<-as.data.frame.matrix(data)
  n$Variables<-rn
  rownames(n) <- NULL
  n
  
}
dataframe_function(tb)
#>   A B Variables
#> 1 2 2         A
#> 2 2 2         B
#> 3 2 2         C
#> 4 2 2         D

reprex package(v2.0.1)于2023年1月1日创建

vwkv1x7d

vwkv1x7d2#

函数不完整。下面是以前不在函数中的所有代码。

dataframe_function <- function(data) {
  n <- as.data.frame.matrix(data)
  n$Variable <- row.names(n)
  row.names(n) <- NULL
  n[, c("Variable", "A", "B")]  #Rearrange columns
}

tb <- matrix(rep(2, times=8), ncol=2, byrow=TRUE)
tb <- as.table(tb)

df1 <- dataframe_function(tb)
df1
#>   Variable A B
#> 1        A 2 2
#> 2        B 2 2
#> 3        C 2 2
#> 4        D 2 2

创建于2023年1月1日,使用reprex v2.0.2

相关问题