如何声明ifelse条件,该条件会根据列名更改列值? 剧透:我尝试过的结果不适用

问题描述

我正在选择以数值表示的前三个特征,以显示一个人的测试结果的摘要。我们共有6个特征,通过在先前的数据帧中按desc准则排序,从中选择3个最高值。因此,根据值的不同,我们可以使用不同的列名来标识数字所指的特征,在总共6个特征中,总是3个主要特征。

对于数字表示,我已经有一些图表来显示值。我想显示一张桌子,上面有一些与前三个特质有关的文本。

要做的是根据占据列名称的特征名称替换相关文本的数值,以使文本与该列的特征匹配。

我正在通过编写if else语句来做到这一点,但是我不知道如何引用列名,所以直到现在我一直尝试这样:

让我们说,在这种情况下,最重要的三个特征如下:

df <- data.frame (Adaptable = 8.1,Dinamic = 7.7,Practic= 4.7)

所以我需要我的代码来替换每个数字以描述每个特征。由于特质不会总是以相同的顺序呈现,因此有必要建立条件。因此,我现在正在尝试使用此代码的第一个特征,这对我来说是有意义的,但最后,即使在运行ifelse语句时使用colnames作为值,所需列中的值也将由NA代替。 / p>

if (colnames(df[1]) == "Adaptable") {
  df[1,1] = "text for adaptable trait"
} else (df[1,1] = "some other text")

现在使用colnames作为独立值:

df <- data.frame (V1 = c(Adaptable,8.1),V2 = c(Dinamic,7.7),V3 = c(Practic,4.7))


if (df[1,1] == "Adaptable") {
  df[2,1] = "some adaptable text"
} else (df[2,1] = "some other text")

使用此特定代码,值将替换为NA

在此先感谢您的任何评论和帮助,如果您能提供一些答案或参考一些文档,我将不胜感激。

解决方法

您可以对列名尝试以下解决方案:

#Data
df <- data.frame (Adaptable = 8.1,Dinamic = 7.7,Practic= 4.7)
#Check colnames
df[,which(colnames(df)=='Adaptable')] <- 'text for adaptable trait'

输出:

                 Adaptable Dinamic Practic
1 text for adaptable trait     7.7     4.7

如果要申请所有列,则应在文本中使用向量,然后尝试循环或lapply()。让我知道这是否适合您。