R 如何声明根据列名更改列值的ifelse条件?(剧透:我尝试的结果是NA)

R 如何声明根据列名更改列值的ifelse条件?(剧透:我尝试的结果是NA),r,if-statement,subset,R,If Statement,Subset,我选择了前3个以数值表示的特征来显示一个人测试结果的摘要。我们共有6个性状,通过在前一个数据框中按desc标准排序,从中选择3个最高值。因此,根据不同的值,我们可以有不同的列名来标识数字所指的特征,通常是6个特征中的3个主要特征 对于数值表示,我已经有一些图表来显示数值。我想展示一个表格,其中包含一些与前3个特征相关的文本 我要做的是根据占据列名的trait name替换相关文本的数值,这样文本就可以与该列上的trait匹配 我通过编写if-else语句来实现这一点,但我不知道如何引用列名,因此

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

对于数值表示,我已经有一些图表来显示数值。我想展示一个表格,其中包含一些与前3个特征相关的文本

我要做的是根据占据列名的trait name替换相关文本的数值,这样文本就可以与该列上的trait匹配

我通过编写if-else语句来实现这一点,但我不知道如何引用列名,因此我迄今为止的尝试是这样的:

假设在这种情况下,前3个特征如下:

df <- data.frame (Adaptable = 8.1, Dinamic = 7.7, Practic= 4.7)
现在使用colname作为独立值:

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'

如果要应用于所有列,则应使用带文本的向量,并尝试循环或重叠。让我知道这是否适用于您。

效果很好,我现在可以复制它来更改列中的其他值,谢谢。我用lapply做了一些尝试,但我需要检查功能以进行更换。在lappy的第二个参数中是否有任何特定的函数要使用,或者我必须编写自己的函数?@rzapatadaniloe您可以使用内置函数来编写函数。你最好选择对你来说更容易的方式:
#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