我正在尝试替换超过100个数据框的列标题中的某些单词。我有一个完美的字符串:
names(singledataframe) <- gsub(x = names(singledataframe), pattern = "Int'l",
replacement = "International")
我正在尝试将此应用于我所制作的所有画面。我使用c()在AllFrames
下引用它们。我试图创建一个在一个帧上工作的字符串的函数,并将其应用于AllFrames
,并带有for循环。
ChangeName1 <- function(singledataframe) {
gsub(x = names(singledataframe), pattern = "Int'l", replacement = "International")
}
然后像:
for (i in 1:length(names(AllFrames))) {lapply(i, ChangeName1)
}
我没有错误,但随机检查各个框架显示没有采取预期的效果。我尝试了很多变化,但我被卡住了!我想也许我需要以更好的方式编辑引用AllFrames
的c()。
答案 0 :(得分:2)
您没有从功能中分配和返回已更改的data.frame
。尝试:
ChangeName1 <- function(singledataframe) {
names(singledataframe) <- gsub(
x = names(singledataframe),
pattern = "Int'l",
replacement = "International");
return(singledataframe);
}
我们假设您的data.frame
存储在list
中;我将使用一些随机生成的数据:
set.seed(2017);
lst <- list(
data.frame(rnorm(10), rnorm(10)),
data.frame(rnorm(10), rnorm(10)));
lst <- lapply(lst, function(x) { colnames(x) <- c("A", "Int'l"); x });
#[[1]]
# A Int'l
#1 1.434201478 0.3427681
#2 -0.077291959 1.5724254
#3 0.739137231 -0.7467347
#4 -1.758604727 0.3066498
#5 -0.069825227 -1.4304858
#6 0.451905527 1.1944265
#7 -1.958366456 -0.4820681
#8 -0.001524259 1.3178624
#9 -0.265336001 -1.1298316
#10 1.563222619 -0.9263514
#
#[[2]]
# A Int'l
#1 0.14070941 -0.6831744
#2 -0.85223255 0.2410894
#3 1.90339718 0.5894319
#4 -1.64818594 -0.9306249
#5 0.75962477 0.2974619
#6 0.06229087 3.1372771
#7 -0.38903119 -1.0275347
#8 0.63666563 1.9418028
#9 -0.86778544 -0.2779562
#10 0.09873361 -0.2215888
然后我们可以lapply
将函数changeName1
添加到所有list
元素中:
lapply(lst, ChangeName1);
#[[1]]
# A International
#1 1.434201478 0.3427681
#2 -0.077291959 1.5724254
#3 0.739137231 -0.7467347
#4 -1.758604727 0.3066498
#5 -0.069825227 -1.4304858
#6 0.451905527 1.1944265
#7 -1.958366456 -0.4820681
#8 -0.001524259 1.3178624
#9 -0.265336001 -1.1298316
#10 1.563222619 -0.9263514
#
#[[2]]
# A International
#1 0.14070941 -0.6831744
#2 -0.85223255 0.2410894
#3 1.90339718 0.5894319
#4 -1.64818594 -0.9306249
#5 0.75962477 0.2974619
#6 0.06229087 3.1372771
#7 -0.38903119 -1.0275347
#8 0.63666563 1.9418028
#9 -0.86778544 -0.2779562
#10 0.09873361 -0.2215888