R gsub用废话(?)代替特殊字符而不是空格

时间:2015-11-16 17:10:42

标签: r gsub

我在BehaviorSpace中使用Netlogo,输出表中的一个单元格是一个代表10个不同数字的字符串。

这是数据的代表性模型:

trialmatrix <- matrix(c("[4.5 6.8 7.9 8.1 9.0 1.2 3.4]","[4.5 6.8 7.9 8.1 9.0 1.2 3.4]", "[4.5 6.8 7.9 8.1 9.0 1.2 3.4]"), nrow=3)
trialdf <- data.frame(trialmatrix, stringsAsFactors = FALSE)

该字符串包含在[]中。我使用R删除[]并将字符串转换为单个数字的向量。

但gsub会添加新字符并且不会删除[]:

> gsub("\\[ | \\]", " ", trialdf)
#[1] "c(\" 4.5 6.8 7.9 8.1 9.0 1.2 3.4]\", \" 4.5 6.8 7.9 8.1 9.0 1.2 3.4]\", \" 4.5 6.8 7.9 8.1 9.0 1.2 3.4]\")"

替换所有特殊字符会删除小数点并仍添加c:

gsub("[^[:alnum:] ]", "", trialdf)
#[1] "c45 68 79 81 90 12 34 45 68 79 81 90 12 34 45 68 79 81 90 12 34"

然后我跑

gsub("c","", trialdf2)

摆脱c。 现在我有了

#[1] "45 68 79 81 90 12 34 45 68 79 81 90 12 34 45 68 79 81 90 12 34"

然后

trial3 <- as.numeric(unlist(strsplit(trial2, " ")))

给出了

#[1] 45 68 79 81 90 12 34 45 68 79 81 90 12 34 45 68 79 81 90 12 34

我现在需要按.1缩放以获得小数。

trial4 <- trial3 * .1
#[1] 4.5 6.8 7.9 8.1 9.0 1.2 3.4 4.5 6.8 7.9 8.1 9.0 1.2 3.4 4.5 6.8 7.9 8.1 9.0 1.2 3.4

现在它又回到了数据框架中。

trialdf2 <- data.frame(matrix(trial4, ncol=7, byrow=TRUE))
#   X1  X2  X3  X4 X5  X6  X7
#1 4.5 6.8 7.9 8.1  9 1.2 3.4
#2 4.5 6.8 7.9 8.1  9 1.2 3.4
#3 4.5 6.8 7.9 8.1  9 1.2 3.4

然后我需要重命名所有列(真实数据集在字符串中最多包含200个元素)。 。

必须有一种更简单的方法。为什么第一个gsub会产生废话呢?

感谢您的期待!

0 个答案:

没有答案