【发布时间】:2019-10-21 21:16:46
【问题描述】:
我编写了一个小函数,通过循环遍历每个变量并在其周围粘贴各种标点符号来帮助重命名列,以便将文本发送到控制台。然后可以将其复制到我的脚本中并根据需要重命名变量。这是函数:
library(tidyverse)
tidy_rename <- function (df) {
df_name <- deparse(substitute(df))
names(df) <- tolower(names(df))
cat(paste(df_name, " <- ", paste(df_name, "%>%\n\t rename(")))
for (i in names(df)) {
cat(paste("\t\t", paste(paste("=", paste(paste('"', i), '"'))), ","), sep="\n")
}
writeLines(")"
)
}
如果我在数据集上使用它:
test_df <- data.frame("VarIable 1" = c(1), "sizrd" = c(1), "dat 1" = c(1),
"x-cord" = c(1), "y-crf" = c(1), "aGe" = c(1), check.names=F)
tidy_rename(test_df)
提供以下可以复制并粘贴到脚本中的内容:
test_df <- test_df %>%
rename( = " variable 1 " ,
= " sizrd " ,
= " dat 1 " ,
= " x-cord " ,
= " y-crf " ,
= " age " ,
)
我想要的是自动将此输出复制到函数内的剪贴板。我不确定如何在forloop 周围使用writeClipboard。这不起作用:
tidy_rename <- function (df) {
df_name <- deparse(substitute(df))
names(df) <- tolower(names(df))
writeClipboard(
cat(paste(df_name, " <- ", paste(df_name, "%>%\n\t rename(")))
for (i in names(df)) {
cat(paste("\t\t", paste(paste("=", paste(paste('"', i), '"'))), ","), sep="\n")
}
writeLines(")"
)
)
}
有什么建议吗?
【问题讨论】:
-
建议:在
loop调用writeClipboard(str)之后,创建一个变量并连接结果str <- paste(str, newstr, sep = "\n")。 -
谢谢,你的意思是
str <- (cat(paste(df_name......writeLines(")" )?我似乎无法解决
标签: r function for-loop clipboard