我有以下问题。
table <- data.frame(col1 = c("cars1 gm", "cars2 gl"), col2 = c("cars1 motor mel", "cars2 prom del"))
col1 col2
1 cars1 gm cars1 motor mel
2 cars2 gl cars2 prom del
table$word <- gsub(table$col1, ' ', table$col2)
Warning message: In gsub(table$col1, " ", table$col2) : argument
'pattern' has length > 1 and only the first element will be used
如何创建一个名为<code>word</code>的新列,其中仅包含<code>col2</code<中未出现的值?
col1 col2 word
1 cars1 gm cars1 motor mel motor mel
2 cars2 gl cars2 prom del prom del
您可以像这样使用mapply
、paste
和strsplit
。
table$word <- mapply(function(x, y) paste(y[!(y %in% x)], collapse=" "),
strsplit(as.character(table$col1), split=" "),
strsplit(as.character(table$col2), split=" "))
这里,<code>strsplit</code>在“”上拆分一个字符向量并返回一个列表。这两个列表被馈送到mapply
,它检查每个列表的对应值,并返回不在第一个列表中的第二个列表的值。生成的矢量与paste
及其折叠参数粘贴在一起。
它返回
table
col1 col2 word
1 cars1 gm cars1 motor mel motor mel
2 cars2 gl cars2 prom del prom del
您可以使用< code>mapply,
#Make sure you read your data with stringsAsFactors = FALSE,
table<-data.frame(col1=c("cars1 gm","cars2 gl"),
col2=c("cars1 motor mel", "cars2 prom del"), stringsAsFactors = FALSE)
table$word <- mapply(function(x, y)
trimws(gsub(sapply(strsplit(x, ' '), paste, collapse = '|'), '', y)),
table$col1, table$col2)
table
# col1 col2 word
#1 cars1 gm cars1 motor mel motor mel
#2 cars2 gl cars2 prom del prom del
您可以使用 gsub 构建查找,然后应用
列以执行感兴趣的 gsub
:
table$col1 <- gsub(" ", "|", table$col1)
table$word <- sapply(1:nrow(table), function(x) gsub(table$col1[x], "", table$col2[x]))
table
# col1 col2 word
#1 cars1|gm cars1 motor mel motor mel
#2 cars2|gl cars2 prom del prom del
使用与上述答案类似的想法,但使用mapply
而不是sapply
:
table$word <- mapply(function(x, y) gsub( gsub(" ", "|", x), "", y),
table$col1,
table$col2)
我在 ifelse 语句中使用带有因子变量的 grepl 不断收到此警告:“参数'模式'有长度 我有这些变量:x7和y7。x7是一个互斥的字符变量,y7是一个不互斥的因子变量,因此是一串数字(0到9)。 x7可以以任何字母结尾,但我想限制为等于Z或J。如果它等于Z,我希望y7以字符串(0,1,2,3,4)中的任何这些值结尾。 下面是我写的: 因此,如果x7是Z,y7是0:4,或者如果x7是J,它是
我试图从下面的< code>chr数组中用gsub删除字符串中的模式 模式由和之间的术语形成,仅在以开头的字符串中。因此,在我们的例子中,模式是: 该模式可以通过使用 去除此图案后,期望的结果是这样的: 无论如何,当我使用: 我得到了一个错误的结果:
大家好,我有这样的问题: 它说: 隐式类必须有一个主构造函数,并且在def traverseFilteringErrors的第一个参数列表中只有一个参数 和 类型不匹配。必填:Future[B] = 我是新来的scala,所以我应该怎么做来解决这个问题?
如何移除第一个数组但返回减去第一个元素的数组 在我的示例中,当删除第一个元素时,我应该得到
问题内容: 这是我要使用的。.length方法对我尝试的任何操作均无效,因此我什至不知道从哪里开始。 问题答案: 您正在尝试遍历单个数组而不是字符串数组。更改 至 以便通过字符串列表循环,收集每个字符串和存储它诠释的,你以后。