我有......
X <- list(df1 <- data.frame(A=c("CC","CC(=O)C","CC(=O)O"),conc=c(1.0,2.2,1.0),Vol=c(2,4.5,6),stringsAsFactors=FALSE), df2 <- data.frame(A=c("COC","O=CC"),conc=c(2.0,3.2),Vol=c(10,23),stringsAsFactors=FALSE))
X
[1]]
A conc Vol
1 CC 1.0 2.0
2 CC(=O)C 2.2 4.5
3 CC(=O)O 1.0 6.0
[[2]]
A conc Vol
1 COC 2.0 10
2 O=CC 3.2 23
我希望将第一列更改为rownames。
我尝试了显而易见的,
X <-lapply(X,function(a) {rownames(a) <- a$A})
但这不起作用......
我开始尝试使用mapply函数但是我没有做得很远......
答案 0 :(得分:2)
使用dplyr和tibble column_to_rownames
X <- list(df1 <- data.frame(A=c("CC","CC(=O)C","CC(=O)O"),conc=c(1.0,2.2,1.0),Vol=c(2,4.5,6),stringsAsFactors=FALSE), df2 <- data.frame(A=c("COC","O=CC"),conc=c(2.0,3.2),Vol=c(10,23),stringsAsFactors=FALSE))
library(dplyr)
library(tibble)
X <- lapply(X, column_to_rownames, "A")
答案 1 :(得分:1)
假设当您说“我想将第一列更改为rownames”时,您要使用列rownames
定义A
并删除列A
。
lapply(X, function(df) {
#new df without rowname col
df_out <- df[,-1]
#set rownames as first col from input df
rownames(df_out) <- df[[1]]
df_out
})
如果要将列A
设置为当前的rownames,则@Sotos注释中的代码可能是答案。