R 创建使用列索引向量将因子转换为字符串的函数
我想将df中的许多列从factor转换为character。我编写了如下代码:R 创建使用列索引向量将因子转换为字符串的函数,r,string,function,R,String,Function,我想将df中的许多列从factor转换为character。我编写了如下代码: ColumnsToStrings <- c(2,5,6,25) for (column in ColumnsToStrings){ df[column] <- lapply(df[column], as.character) } ColumnsToStrings <- c(2,5,6,25) df <- ConvertColumnToString(df,Colum
ColumnsToStrings <- c(2,5,6,25)
for (column in ColumnsToStrings){
df[column] <- lapply(df[column], as.character)
}
ColumnsToStrings <- c(2,5,6,25)
df <- ConvertColumnToString(df,ColumnsToStrings)
ColumnsToStrings循环在函数中似乎是多余的,只需执行以下操作:
df <- mtcars[1:6] # example, all numeric
ConvertColumnToString <- function(df, ColumnsToStrings) {
df[ColumnsToStrings] <- lapply(df[ColumnsToStrings], as.character)
return(df)
}
ColumnsToStrings <- c(2, 5, 6, 25)
res <- ConvertColumnToString(df, ColumnsToStrings)
sapply(res, class)
# mpg cyl disp hp drat wt
# "numeric" "character" "numeric" "numeric" "character" "character"
循环在您的函数中似乎是多余的,只需执行以下操作:
df <- mtcars[1:6] # example, all numeric
ConvertColumnToString <- function(df, ColumnsToStrings) {
df[ColumnsToStrings] <- lapply(df[ColumnsToStrings], as.character)
return(df)
}
ColumnsToStrings <- c(2, 5, 6, 25)
res <- ConvertColumnToString(df, ColumnsToStrings)
sapply(res, class)
# mpg cyl disp hp drat wt
# "numeric" "character" "numeric" "numeric" "character" "character"
出于兴趣,为什么我的版本会删除数据?@PaulBarr当然,请参见编辑。我还在我的版本的输出(虽然不是绝对必要的)周围包装了一个return
,以使其清晰明了。非常感谢。为什么它在你的例子中不是必需的,但在我的例子中却是必需的?@PaulBarr这是必需的,看,我的意思是,在这个位置也可以只写df
而不是return(df)
。看。出于兴趣,为什么我的版本要删除数据?@PaulBarr当然,请看编辑。我还在我的版本的输出(虽然不是绝对必要的)周围包装了一个return
,以使其清晰明了。非常感谢。为什么它在你的例子中不是必需的,但在我的例子中却是必需的?@PaulBarr这是必需的,看,我的意思是,在这个位置也可以只写df
而不是return(df)
。看见
ConvertColumnToString <- function (df, VectorOfColumns) {
for (column in VectorOfColumns ) {
df[column] <- lapply(df[column], as.character)
}
return(df)
}
res2 <- ConvertColumnToStringV1(df, ColumnsToStrings)
sapply(res2, class)
# mpg cyl disp hp drat wt
# "numeric" "character" "numeric" "numeric" "character" "character"