如何在具有不同条件的R中的列中拆分因子值

时间:2015-06-18 03:17:15

标签: regex r

我有这样的矢量。

Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'employeeRepository': Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: Validation failed for query for method public abstract java.util.List EmployeeRepository.findByDeptId(java.lang.Long)!
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1566)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:539)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:476)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:303)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:299)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.findAutowireCandidates(DefaultListableBeanFactory.java:1127)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1051)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:949)
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:533)
    ... 31 more
Caused by: java.lang.IllegalArgumentException: Validation failed for query for method public abstract java.util.List EmployeeRepository.findByDeptId(java.lang.Long)!
    at org.springframework.data.jpa.repository.query.SimpleJpaQuery.validateQuery(SimpleJpaQuery.java:87)
    at org.springframework.data.jpa.repository.query.SimpleJpaQuery.<init>(SimpleJpaQuery.java:57)
    at org.springframework.data.jpa.repository.query.JpaQueryFactory.fromMethodWithQueryString(JpaQueryFactory.java:70)
    at org.springframework.data.jpa.repository.query.JpaQueryFactory.fromQueryAnnotation(JpaQueryFactory.java:51)
    at org.springframework.data.jpa.repository.query.JpaQueryLookupStrategy$DeclaredQueryLookupStrategy.resolveQuery(JpaQueryLookupStrategy.java:137)
    at org.springframework.data.jpa.repository.query.JpaQueryLookupStrategy$CreateIfNotFoundQueryLookupStrategy.resolveQuery(JpaQueryLookupStrategy.java:202)
    at org.springframework.data.jpa.repository.query.JpaQueryLookupStrategy$AbstractQueryLookupStrategy.resolveQuery(JpaQueryLookupStrategy.java:80)
    at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.<init>(RepositoryFactorySupport.java:357)
    at org.springframework.data.repository.core.support.RepositoryFactorySupport.getRepository(RepositoryFactorySupport.java:192)
    at org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport.initAndReturn(RepositoryFactoryBeanSupport.java:239)
    at org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport.afterPropertiesSet(RepositoryFactoryBeanSupport.java:225)
    at org.springframework.data.jpa.repository.support.JpaRepositoryFactoryBean.afterPropertiesSet(JpaRepositoryFactoryBean.java:92)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1625)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1562)
    ... 41 more
Caused by: java.lang.NullPointerException
    at org.hibernate.hql.internal.ast.ParameterTranslationsImpl.getNamedParameterExpectedType(ParameterTranslationsImpl.java:92)
    at org.hibernate.engine.query.spi.HQLQueryPlan.buildParameterMetadata(HQLQueryPlan.java:415)
    at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:150)
    at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:93)
    at org.hibernate.engine.query.spi.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:167)
    at org.hibernate.internal.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:301)
    at org.hibernate.internal.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:236)
    at org.hibernate.internal.SessionImpl.createQuery(SessionImpl.java:1800)
    at org.hibernate.jpa.spi.AbstractEntityManagerImpl.createQuery(AbstractEntityManagerImpl.java:328)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:483)
    at org.springframework.orm.jpa.ExtendedEntityManagerCreator$ExtendedEntityManagerInvocationHandler.invoke(ExtendedEntityManagerCreator.java:344)
    at com.sun.proxy.$Proxy83.createQuery(Unknown Source)
    at org.springframework.data.jpa.repository.query.SimpleJpaQuery.validateQuery(SimpleJpaQuery.java:81)

这是我的数据集的一个列变量的一些示例值,我想以下列方式拆分列:

> top[1:5,6]
[1] Scroll, mounted and framed, ink and colour on paper \n 34 x 95 cm. (13 3/8 x 37 3/8 in.)    
[2] Scroll, mounted and framed, ink and colour on paper \n 34.3 x 68.3 cm. (13 1/2 x 26 7/8 in.)
[3] Scroll, mounted and framed, ink and colour on paper \n 67 x 34 cm. (26 3/8 x 13 3/8 in.)    
[4] Scroll, mounted and framed, ink on paper \n 135 x 68 cm. (53 1/8 x 26 3/4 in.)              
[5] Hanging scroll, ink and colour on paper \n 80 x 28 cm. (31 1/2 x 11 in.)      

并删除括号中的内容。

我怎样才能实现这一点,因为这是\ n而逗号是分隔符?至少,我想要分开媒体和大小。

R的新手,非常感谢任何帮助

3 个答案:

答案 0 :(得分:2)

我得到了这个结果。

x <- "Scroll, mounted and framed, ink and colour on paper \n 34 x 95 cm. (13 3/8 x 37 3/8 in.)"
strsplit(x, ", | \n | \\(.+")

#[[1]]
#[1] "Scroll"                  "mounted and framed"     
#[3] "ink and colour on paper" "34 x 95 cm." 

答案 1 :(得分:2)

<form action='scratch_clean' method='get'>
  <input id='return' />
  <input id="no_return" />
  <input type='submit' />
</form>
<div id='result'></div>
<script type="text/javascript">
  $(document).ready(function() {
    $('#no_return').on('keyup', function(e) {
      e.preventDefault();
      var code = e.which;
      if(code==13)
      {
        $('#result').append('keyup<br>');
        return false;
      }
      //return false; // not needed

  });
  $('form').on('submit', function(e) {
    e.preventDefault();
    $('#result').append('submit<br>');
    // EDIT: Other processing happens here
    return false;
  });
});
</script>

如果您想要数据框结果

data <- c("Scroll, mounted and framed, ink and colour on paper \n 34 x 95 cm. (13 3/8 x 37 3/8 in.)" , 
          "Scroll, mounted and framed, ink and colour on paper \n 34.3 x 68.3 cm. (13 1/2 x 26 7/8 in.)" , 
          "Scroll, mounted and framed, ink and colour on paper \n 67 x 34 cm. (26 3/8 x 13 3/8 in.)" , 
          "Scroll, mounted and framed, ink on paper \n 135 x 68 cm. (53 1/8 x 26 3/4 in.)" , 
          "Hanging scroll, ink and colour on paper \n 80 x 28 cm. (31 1/2 x 11 in.)")


res <- strsplit(gsub("\\. *\\([^)]+\\)" , "" , data ) , ",|\n")

# [[1]]
# [1] "Scroll"                    " mounted and framed"       " ink and colour on paper " " 34 x 95 cm"              
# 
# [[2]]
# [1] "Scroll"                    " mounted and framed"       " ink and colour on paper " " 34.3 x 68.3 cm"          
# 
# [[3]]
# [1] "Scroll"                    " mounted and framed"       " ink and colour on paper " " 67 x 34 cm"              
# 
# [[4]]
# [1] "Scroll"              " mounted and framed" " ink on paper "      " 135 x 68 cm"       
# 
# [[5]]
# [1] "Hanging scroll"            " ink and colour on paper " " 80 x 28 cm"

答案 2 :(得分:2)

根据显示的示例,我们可以移除\n以及(之后带有gsub的字符。根据使用外观显示的文字插入,,并使用vector

阅读read.table/read.csv('top1')
top1 <- gsub('\\s*\\(.*$|[\n]', '', top)
read.table(text=gsub('(?<=(?i)scroll,)\\s+(?=ink)|(?<= on paper)\\s+',
  ',', top1, perl=TRUE), sep=',', header=FALSE, stringsAsFactors=FALSE)
#              V1                  V2                       V3              V4
#1         Scroll  mounted and framed  ink and colour on paper     34 x 95 cm.
#2         Scroll  mounted and framed  ink and colour on paper 34.3 x 68.3 cm.
#3         Scroll  mounted and framed  ink and colour on paper     67 x 34 cm.
#4         Scroll  mounted and framed             ink on paper    135 x 68 cm.
#5 Hanging scroll                      ink and colour on paper     80 x 28 cm.

数据

top <- c('Scroll, mounted and framed, ink and colour on paper \n 34 x 95 cm. (13 3/8 x 37 3/8 in.)',    
 'Scroll, mounted and framed, ink and colour on paper \n 34.3 x 68.3 cm. (13 1/2 x 26 7/8 in.)',
 'Scroll, mounted and framed, ink and colour on paper \n 67 x 34 cm. (26 3/8 x 13 3/8 in.)',   
 'Scroll, mounted and framed, ink on paper \n 135 x 68 cm. (53 1/8 x 26 3/4 in.)',             
 'Hanging scroll, ink and colour on paper \n 80 x 28 cm. (31 1/2 x 11 in.)')