R 使用if语句添加变量

R 使用if语句添加变量,r,csv,R,Csv,我有一个包含学员姓名的csv文件和一个包含出版物列表的csv文件,其中包括一个定义作者姓名的变量。如果出版物中的作者姓名与学员文件中包含的任何学员姓名PEEP匹配,我希望R向出版物数据框添加一个变量,其中包含一个伪变量。下面的代码对我不起作用,我不知道为什么。我收到的错误是找不到对象“I”。我这样做完全错了吗?谢谢 publications <- read.csv("publications.csv", header = TRUE, stringsAsFactors = FALSE) tr

我有一个包含学员姓名的csv文件和一个包含出版物列表的csv文件,其中包括一个定义作者姓名的变量。如果出版物中的作者姓名与学员文件中包含的任何学员姓名PEEP匹配,我希望R向出版物数据框添加一个变量,其中包含一个伪变量。下面的代码对我不起作用,我不知道为什么。我收到的错误是找不到对象“I”。我这样做完全错了吗?谢谢

publications <- read.csv("publications.csv", header = TRUE, stringsAsFactors = FALSE)
trainees <- read.csv("TraineeRoster.csv", header = TRUE, stringsAsFactors = FALSE)

peeps <- trainee$LastName

publications["TraineePub"]
for (i in 1:nrow(publications)) {
    if (publications$AuthorLast[i] == peeps) {
        publications$TraineePub[i]
    } else {
        publications$TraineePub[i]
    }
}

你可以试试这个。因为你的例子是不可复制的,所以我编了一些数据

set.seed(123)
publications <- data.frame(AuthorLast = sample(letters[1:10]), TraineePub = "no")
peeps <- letters[1:5]

publications$TraineePub[publications$AuthorLast %in% peeps] <- "yes"
publications

#    AuthorLast TraineePub
# 1           c        yes
# 2           h         no
# 3           d        yes
# 4           g         no
# 5           f         no
# 6           a        yes
# 7           j         no
# 8           i         no
# 9           b        yes
# 10          e        yes

您可能应该阅读一些R教程,因为您的代码除了阅读原始表之外什么都不做。代码应该是这样的

publications <- read.csv("publications.csv", header = TRUE, stringsAsFactors = FALSE)
trainees <- read.csv("TraineeRoster.csv", header = TRUE, stringsAsFactors = FALSE)
peeps <- trainee$LastName

publications$IsTrainee = 1*(publications$AuthorLast %in% peeps & publications$AuthorFirst %in% trainee$FirstName)

write.csv(publications,file='PublicationsTrainee.csv')
但是,上面的代码有一些错误:

出版物[trainepub]没有任何作用。您可以添加逗号来尝试引用名为TraineePub的行或列,但我不知道该变量是否存在

publications$trainepub[i]调用一个值,但它不处理它,除非调用print,print将打印该值


编辑:此外,您应该尽量避免使用for循环。学习使用应用或仅使用向量运算,例如c1,2,3,4,5+c2,0,3,1,3等同于c3,2,6,5,8

您是否尝试过使用ifelse?它在这里可能比for循环和if-else语句更有效。我还没有尝试过。我对r很陌生。谢谢你的提示,这很有道理。我简直不敢相信我已经通过了2个MOOC和O'Reilly的R食谱,我仍然遇到了这样的基本障碍。你的反馈真的很有帮助。谢谢大家!@user1362215谢谢@Henrik,这非常有帮助!