我试图找到一个似乎是一个简单问题但没有任何成功的答案。
我想创建一个函数,它可以针对不同的数据帧操作不同的变量。功能需要做的就是搜索价值"不知道"并用NA替换它。我会按如下方式手动执行此操作:
raw.df$S8[raw.df$S8 == "Don't know"] <- NA
作为学习R的练习我想通过函数来做这个,但是找不到引用函数输入的方法。
在这个示例代码中,我甚至无法创建一个向量,它是我想要重新编码的数据帧变量的副本 - 它以NULL形式出现。因此,在我知道如何执行此部分之前,我无法将值重新编码为NA。
> NADK <- function(df,x) {
+ DDD <<- df$x
+ }
>
> NADK(raw.df, S8)
> DDD
NULL
我假设我不能使用命令df $ x并期望r知道这来自函数输入?
答案 0 :(得分:2)
不是编写一个在"Don't know"
中使用硬连线的函数,而是将其作为函数的参数似乎更灵活。类似的东西:
to.na <- function(df,x,na.string){
df[x][df[x] == na.string] <- NA
df
}
这将返回更改的数据帧。
例如,如果
df <- data.frame(Name = c("Larry", "Curly", "Moe"),BirthYear = c(1900, 1910, 1920), DeathYear = c("1950", "1960", "Not dead"))
因此df
是
Name BirthYear DeathYear
1 Larry 1900 1950
2 Curly 1910 1960
3 Moe 1920 Not dead
然后:
> df <- to.na(df,"DeathYear","Not dead")
> df
Name BirthYear DeathYear
1 Larry 1900 1950
2 Curly 1910 1960
3 Moe 1920 <NA>
如果您使用read.table
(或read.csv
等关联函数)从文件中读取数据框,那么您可以通过使用参数{{1}来避免此问题。 }。有关详细信息,请参阅na.strings
。