在R中的函数后动态更改csv名称

我正在尝试根据函数中使用的data.frame名称更改.csv文件名。

该功能包括使用双底胶。一切正常,但不会导出具有特定文件名的2个csv。使用简单的paste()给我一个错误

file(file,ifelse(append,“ a”,“ w”))中的错误:   无效的“描述”参数 另外:警告消息: 在if(file ==“”)文件

# dataframe example
df1 <- mtcars %>% mutate(newColumn = carb*100)
df2 <- mtcars %>% mutate(newColumn = carb*200)

# create dataframe list
df_list <- list(df1,df2)

# start function
fun <- function(x) {

# example using diplyr
df <- x %>% 
  mutate(newColumn_2 = newColumn*30)

#export csv using dataframe name in the file name
write.csv(df,paste0(deparse(substitute(x)),".csv"))

}

df_list <- lapply(df_list,fun)

它给我一个名为“ X [[i]]”。csv的文件,而不是df1.csv和df2.csv

hahahahaha2009 回答:在R中的函数后动态更改csv名称

我认为您遇到了一些问题。首先,您需要为列表元素分配名称,以便您的函数可以检索这些名称。

#your initial approach doesn't name the list elements
df_list <- list(df1,df2)
> names(df_list)
NULL

# so,be explicit
df_list <- list(df1 = df1,df2 = df2)
> names(df_list)
[1] "df1" "df2"

现在运行函数的修改版本,该版本可以在列表位置而不是列表元素上运行。请注意,我用f取代了cyl,因为您的数据框中没有f

fun <- function(x) {

    df <- mutate(df_list[[x]],newColumn_2 = cyl * 30)

    write.csv(df,paste0(names(df_list)[x],".csv"))

}

现在lapply(seq_along(df_list),fun)应该会给出您想要的结果。

本文链接:https://www.f2er.com/3166874.html

大家都在问