如何解决如何声明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()
。让我知道这是否适合您。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。