Я думаю, что это может быть относительно простой ответ, но я понятия не имею, откуда взялась проблема и как ее искать. Не то чтобы я не пробовал!
В любом случае, я думаю, было бы неплохо получить четкий ответ на этот вопрос на SO, поскольку я не могу быть единственным человеком, который когда-либо сталкивался с этим.
У меня есть список фреймов данных, созданных из tidy, который был транспонирован, чтобы дать столбец для каждой переменной и строку для каждого из параметров, таких как коэффициент, доверительные интервалы и т. Д., Выглядит следующим образом:
> print(dd)
[[1]]
Seasonmasika Seasonvuli Parameter
1 -1.35 -0.83 estimate
2 0.25 0.23 std.error
3 -5.51 -3.61 statistic
4 0.00 0.00 p.value
5 0.48 0.45 CI
[[2]]
scale(Group2) scale(Group3) scale(dist.water) Parameter
1 0.11 -0.46 -0.49 estimate
2 0.08 0.15 0.09 std.error
3 1.40 -3.13 -5.30 statistic
4 0.16 0.00 0.00 p.value
5 0.15 0.29 0.18 CI
> lapply(dd, names)
[[1]]
[1] "Seasonmasika" "Seasonvuli" "Parameter"
[[2]]
[1] "scale(Group2)" "scale(Group3)" "scale(dist.water)" "Parameter"
Проблема в том, что имена переменных не интуитивно понятны, и там, где я масштабировал переменные в модели, имя переменной все еще имеет текст «scale ()». Хуже всего то, что эту часть строки имени столбца нельзя заменить, только текст внутри скобок. Например, эта команда ничего не делает с именами столбцов, в которых есть scale (), но работает с другими.
> test<-lapply(dd, function(x){
+ colnames(x)<- gsub(pattern = "Seasonvuli", replacement = "SR", colnames(x))
+ colnames(x)<- gsub(pattern = "Seasonmasika", replacement = "LR", colnames(x))
+ colnames(x)<- gsub(pattern = "scale(Group2)", replacement = "Acacia-Merua", colnames(x))
+ colnames(x)<- gsub(pattern = "scale(Group3)", replacement = "Combretum-Amarula", colnames(x))
+ return(x)
+ })
>
> lapply(test, names)
[[1]]
[1] "LR" "SR" "Parameter"
[[2]]
[1] "scale(Group2)" "scale(Group3)" "scale(dist.water)" "Parameter"
Но он заменит то, что находится внутри скобок scale ():
> test<-lapply(dd, function(x){
+ colnames(x)<- gsub(pattern = "Seasonvuli", replacement = "SR", colnames(x))
+ colnames(x)<- gsub(pattern = "Seasonmasika", replacement = "LR", colnames(x))
+ colnames(x)<- gsub(pattern = "Group2", replacement = "Acacia-Merua", colnames(x))
+ colnames(x)<- gsub(pattern = "scale(Group3)", replacement = "Combretum-Amarula", colnames(x))
+ return(x)
+ })
>
> lapply(test, names)
[[1]]
[1] "LR" "SR" "Parameter"
[[2]]
[1] "scale(Acacia-Merua)" "scale(Group3)" "scale(dist.water)" "Parameter"
Кто-нибудь знает, почему это происходит, и возможное решение для переименования этих столбцов в соответствии с моей первой попыткой кода вверху в «общепринятом смысле», как это обычно делается?
pattern = "scale\\(Group3\\)"
;)
имеет особое значение в Reg Ex, поэтому нам нужно пропустить использование \\ - person A. Suliman   schedule 28.11.2019