在 R 中一次替换多列中的值的最简单方法
Easiest way to replace values in multiple columns at once in R
我正在尝试用 NA 替换数据框中的“*”。我尝试使用 gsub 函数如下:
df = data.frame(x = c('*',2,3), y = c(3,3,5))
df[,1:2] = apply(df[,1:2], 2, function(x) gsub('*',NA,x))
虽然我的数据框中只有一个 * 但 gsub 将所有数据替换为 NAs!看起来 gsub 对 * 有问题。我认为这是在我的数据框中用 NA 替换 * 的最简单方法,但它失败了。谁有更好的主意?
使用fixed = TRUE
:
df[,1:2] = apply(df[,1:2], 2, function(x) gsub('*',NA,x,fixed = TRUE))
*
用作 regular expression
否则。
而且可以跳过apply函数直接找*
:
df <- data.frame(x = c('*',2,3), y = c(3,3,5))
df
#> x y
#> 1 * 3
#> 2 2 3
#> 3 3 5
df[df[,]=="*"] <- NA
df
#> x y
#> 1 <NA> 3
#> 2 2 3
#> 3 3 5
由 reprex package (v0.3.0)
创建于 2021-01-06
并且 df[ , ]
是不必要的,所以 df[df=="*"] <- NA
就足够了。
我正在尝试用 NA 替换数据框中的“*”。我尝试使用 gsub 函数如下:
df = data.frame(x = c('*',2,3), y = c(3,3,5))
df[,1:2] = apply(df[,1:2], 2, function(x) gsub('*',NA,x))
虽然我的数据框中只有一个 * 但 gsub 将所有数据替换为 NAs!看起来 gsub 对 * 有问题。我认为这是在我的数据框中用 NA 替换 * 的最简单方法,但它失败了。谁有更好的主意?
使用fixed = TRUE
:
df[,1:2] = apply(df[,1:2], 2, function(x) gsub('*',NA,x,fixed = TRUE))
*
用作 regular expression
否则。
而且可以跳过apply函数直接找*
:
df <- data.frame(x = c('*',2,3), y = c(3,3,5))
df
#> x y
#> 1 * 3
#> 2 2 3
#> 3 3 5
df[df[,]=="*"] <- NA
df
#> x y
#> 1 <NA> 3
#> 2 2 3
#> 3 3 5
由 reprex package (v0.3.0)
创建于 2021-01-06并且 df[ , ]
是不必要的,所以 df[df=="*"] <- NA
就足够了。