按列值仅从dataframe中选择字符串

按列值仅从dataframe中选择字符串,r,igraph,R,Igraph,目标是基于a列的最大值创建一个c列中字符串值的变量 很简单,但是当我运行下面的代码时,除了灰色外,打印的是索引号和列名 如果希望在链中获得相同的输出,请使用target_vector,并注意stringsAsFactors=FALSE,默认情况下,data.frame参数stringsAsFactors=TRUE,因此它会将任何字符列转换为factor。通过将其设为FALSE,我们可以避免转换为字符的最后一步 您是否需要as.charactertarget[[c]]刚刚尝试过,target[[c

目标是基于a列的最大值创建一个c列中字符串值的变量

很简单,但是当我运行下面的代码时,除了灰色外,打印的是索引号和列名


如果希望在链中获得相同的输出,请使用target_vector,并注意stringsAsFactors=FALSE,默认情况下,data.frame参数stringsAsFactors=TRUE,因此它会将任何字符列转换为factor。通过将其设为FALSE,我们可以避免转换为字符的最后一步


您是否需要as.charactertarget[[c]]刚刚尝试过,target[[c]]返回[1]灰色级别:蓝棕色绿色灰色橙色紫色红色黄色是的,因为它是一个因子列,您可能需要as.charactertarget[[c]]和as.charactertarget[[c]]返回[1]灰色级别,这将是一个简单的问题,我想,如果没有外部的c来对它进行矢量化,它是不起作用的。如果你检查相同的,那么它是相同的,因为as.charactertarget[[c]],as.charactertarget[[c]]][1]是真的,因为as.character作用于向量。通过用[]提取列,它是一个向量,您完全正确,可以接受,您可以添加.charactertarget[[c]]作为初始解决方案,并添加tidyverse解决方案
a <- c(1,2,3,4,5,6,7,8)
b <- c("a","b","c","d","e","f","g","h")
c <- c("red", "green", "blue", "brown", "purple", "yellow", "orange", "grey")

df <- data.frame(a,b,c)

target <- df[which.max(df$a),]

print(target)

print(target["c"])

actual_target <- target["c"]

print(actual_target)
Error in delete.vertices(tube_graph, c(target)) :   
At iterators.c:759 : Cannot create iterator, invalid vertex id, Invalid vertex id
library(tidyverse)
data.frame(a,b,c, stringsAsFactors = FALSE) %>% 
     slice(which.max(a)) %>% 
     pull(c)
#[1] "grey"